创建二叉树那块为什么调用自身的时候要加上取地址符

img

我的代码

#include
#include

typedef struct BiTNode
{
char data;
struct BiTNode *left, *right;
}BiTNode, *BiTree;

void CreatBiTree(BiTree *T) //创建二叉树
{
char a;
scanf("%c",&a);
if(a=='#') *T=NULL;
else
{
*T=(BiTree)malloc(sizeof(BiTNode));
(*T)->data=a;
CreatBiTree(&(*T)->left);
CreatBiTree(&(*T)->right);
}
}

void show(BiTree T) //递归中序遍历二叉树
{
if(T)
{
show(T->left);
printf("%c",T->data);
show(T->right);
}
}

int main()
{
BiTree T;
CreatBiTree(&T);
show(T);

return 0;

}

调用取地址符,这样能保证是在一棵树上的,如果不这么写, 那这个二叉树在递归调用的时候,树和数之间就会断开,你的可能就会成为仅有根节点的树