1 回答

TA贡献1799条经验 获得超8个赞
您遍历的算法写错了,按照如下写法就可以了。
#include<iostream>
#include<string>
using namespace std;
class Node
{
public:Node(){}
~Node(){}
public:char data;
Node *lchild;
Node *rchild;
};
void creattree(Node *&T)
{
Node *n;
n = new Node();
cin>>n->data;
if(n->data == '#')
//如果当前节点为空 不创建
{
T=NULL;
}
else
//节点非空时 创建该节点n
{
T = n;
creattree(T->lchild);
creattree(T->rchild);
}
}
void inOrderTraverse(Node *&T)
{
if (T == NULL) //修改此处增加对空的判断
{
return;
}
inOrderTraverse(T->lchild);
cout<<T->data; //此处的判断删除
inOrderTraverse(T->rchild);
}
int main()
{
Node *T=NULL;
cout<<"开始创建二叉树:"<<endl;
creattree(T);
cout<<"以下开始用中序法遍历二叉树:"<<endl;
inOrderTraverse(T);
cout<<endl;
delete T;
return 0;
}
添加回答
举报