c++二叉树问题
#include<iostream>using namespace std;
template<class DataType>
struct BiNode
{
DataType data;
BiNode<DataType>*lchild,*rchild;
};
template<class DataType>
class BiTree
{
public:
BiTree(){root=Creat(root);}
void PreOrder(){PreOrder(root);}
private:
BiNode<DataType>*root;
BiNode<DataType>*Creat(BiNode<DataType>*bt);
void PreOrder(BiNode<DataType>*bt);
// void nonpreorder(BiNode<DataType>*bt);
};
template<class DataType>
void BiTree<DataType>::PreOrder(BiNode<DataType>*bt) //前序遍历
{
if(bt==NULL)return;
else{
cout<<bt->data;
PreOrder(bt->lchild);
PreOrder(bt->rchild);
}
}
template<class DataType>
BiNode<DataType>*BiTree<DataType>::Creat(BiNode<DataType>*bt) //创建树
{
char ch;
cin>>ch;
if(ch=='#')bt=NULL;
else{
BiNode<char> *bt;
bt=new BiNode<char>;
bt->data=ch;
bt->lchild=Creat(bt->lchild);
bt->rchild=Creat(bt->rchild);
}
return bt;
}
main()
{
BiTree<char> BT;
BT.PreOrder();
}
下划线处的函数
例如输入AB#D##C##;
为什么没办法输出,是因为传参数root,这个root是NULL吗?(创建树的时候,结束的root)
我应该怎么回去这个A,再调用PreOrder这个函数