请进来看看这个先序遍历二叉树的程序
#include <iostream.h>
#include <stdio.h>
#include <malloc.h>
#define MAXSIZE100
struct BiTNode
{
char data;
struct BiTNode *lchild, *rchild;
};
BiTNode *BiTree;
void CreateBiTree(BiTNode *BiTree)//先序递归构造二叉树
{
char ch;
cout < < "输入节点数据(char 型)(空格代表NULL): "; //这句要把数据
//全部输入后才会显示出来 不知道为什么?
ch = getchar();
if(ch == ' ')//若为叶子节点则其左右孩子均为空
BiTree = NULL;
else
{
BiTree = (BiTNode *)malloc(sizeof(BiTNode));
BiTree-> data = ch;//生成根节点
CreateBiTree(BiTree-> lchild);//构造左子树
CreateBiTree(BiTree-> rchild);//构造右子树
}
}
void PreOrderTraverse(BiTNode *BiTree)//先序遍历二叉树并输出
{
if(BiTree)
{
cout < < " " < <BiTree-> data;
if(BiTree-> lchild)
{
PreOrderTraverse(BiTree-> lchild);
if(BiTree-> rchild)
PreOrderTraverse(BiTree-> rchild);
}
}
}
void main()
{
BiTree = (BiTNode *)malloc(MAXSIZE * sizeof(BiTNode));
BiTree = NULL;
CreateBiTree(BiTree);
PreOrderTraverse(BiTree);
}
[解决办法]
//这句要把数据
//全部输入后才会显示出来 不知道为什么?
仅仅是这个问题吗?
因为这个流并没有结束,请在该句后面添加 < <endl;表示流结束,则该句自然会显示出来了。