typedef struct BiTNode{
struct BiTNode *lchild,*rchild;
int val;
}BiTNode,*BiTree;
BiTree*是结构体指针,因为它要去访问左孩子和右孩子,所以要一个指针去指向,而因为在定义父节点的时候,结构体需要去计算大小来开辟空间,如果穿的不是指针,而是BiTNode,那么里面就成了BiTNode里面还有BiTNode的情况,对于该情况而言,编译器是不知道开多少内存的(结构体的内存对齐),所以,里面就必须用已经确定了大小的指针,不管你这个指针一直嵌套地指向其他结构体,但是指针的大小是固定的,下面附一篇我的结构体内存对齐相关内容,希望被采纳。
https://blog.csdn.net/zhu_pi_xx/article/details/125670867?spm=1001.2014.3001.5501
*BiTree 是一个结构体指针,BiTree 指向结构体地址,BiTree 可以访问结构体中的元素,嵌套的环境可以实现二叉树中对左右孩子的访问
这是一种结构体的嵌套使用
这篇文章:二级指针:为什么用(Bitree *T)而不用(Bitree T)? 也许能够解决你的问题,你可以看下