1 回答

TA貢獻1799條經(jīng)驗 獲得超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 == '#')
//如果當(dāng)前節(jié)點為空 不創(chuàng)建
{
T=NULL;
}
else
//節(jié)點非空時 創(chuàng)建該節(jié)點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<<"開始創(chuàng)建二叉樹:"<<endl;
creattree(T);
cout<<"以下開始用中序法遍歷二叉樹:"<<endl;
inOrderTraverse(T);
cout<<endl;
delete T;
return 0;
}
添加回答
舉報