二叉树递归调用,指针的困惑

void Tree ::creatTree(Node * & p)
{
T val;
cin>>val;
if(val=='#')
p=NULL;
else
{
p=new Node ;
p->data=val;
cout<leftchild< creatTree(p->leftchild);
creatTree(p->rightchild);
}
}

我想问的是:在第一次输入非#之后,构造一个节点,给这个结点的data部分赋值,但是这时候p->rightchild是空啊,怎么可以 递归得起来,求大神啊

creatTree()是是用的指针的引用传递参数,递归之后在下一层把rightchild的对象new出来。

你单步调试下就知道了,经过creatTree,p(也就是p->leftchild p->rightchild)会被设置为分配后的指针。