c++ 关于引用指针的问题:(下面是代码)
在main函数中BiTree 只定义了T 而没有初始化。在createBITree中用指针传进来(BiTree T)会报错,没有初始化。 但是用引用传进来(BiTree &T
)就不会报错。这到底是为什么? 而且就算我在main中初始化了BiTree T = new BiTreeNode; 运行结果也不正确。想知道为什么。
typedef struct node
{
struct node *lchild;
struct node *rchild;
char data;
}BiTreeNode, *BiTree;
void createBiTree(BiTree T)
{
char c;
cin >> c;
if ('#' == c) //当遇到#时,令树的根节点为NULL,从而结束该分支的递归
T = NULL;
else
{
T = new BiTreeNode;
T->data = c;
createBiTree(T->lchild);
createBiTree(T->rchild);
}
}
void preTraverse(BiTree T)
{
if (T)
{
cout << T->data << " ";
preTraverse(T->lchild);
preTraverse(T->rchild);
}
}
int main()
{
BiTree T ;
createBiTree(T);
cout << "前序遍历二叉树:" << endl;
preTraverse(T);
postTraverse(T);
return 0;
}