|
楼主 |
发表于 2015-8-19 11:55:11
|
显示全部楼层
本帖最后由 骇客king 于 2015-8-19 12:03 编辑
CreateBiTree(&(*T)->lchild); 这个地方没有理解,(*T)->lchild是一个没有初始化地址,不是应该把下一个节点地址给(*T)->lchild吗?这样(*T)->lchild才能指向下一个节点,但是&(*T)->lchild是什么意思呢,那进入下一次递归*T = (BiTNode *)malloc(sizeof(BiTNode));新生成的节点需要被 (*T)->lchild啊是在这重新赋值了吗?
是不是这么理解,&(*T)->lchild取地址之后,进入下一次递归*T = (BiTNode *)malloc(sizeof(BiTNode))给这个传进来地址赋值为新生成节点的地址,这样(*T)->lchild里边放的内容就是新生成节点的地址了,就指向了。
typedef struct BiThrNode
{
char data;
struct BiThrNode *lchild, *rchild;
PointerTag ltag;
PointerTag rtag;
} BiThrNode, *BiThrTree;
这个结构为什么要过搞一个指针出来呢,就定义一个BiThrNode不行吗?然后程序里边自己控制指针,是不是能方便一些,和清晰一些呢?
求大神给解释一下啊? |
|