读书人

二叉树的建立有关问题

发布时间: 2013-08-09 15:16:24 作者: rapoo

二叉树的建立问题
typedef struct Node
{
DataType data;
struct Node *lchild;
struct Node *rchild;
}BiTNode,*BiTree;
/*按前序建立二叉树,数据按前序输入 */
void CreateBinTree(BinTree *T)
{
char ch;
if((ch=getchar())==' ')
*T=NULL;
else{
*T=(BinTNode*)malloc(sizeof(BinTNode));
(*T)->data=ch;
CreateBinTree(&(*T)->lchild);
CreateBinTree(&(*T)->rchild);
}
}
为什么void CreateBinTree(BinTree *T) 中要BinTree *T,这样定义,这代表什么意思。而不是BinTree T,

[解决办法]
其实这个是比较好理解的,比如有个变量int a,你要修改a的值,那么只要把a的地址传递给函数,函数里面修改这个指针的值(也就是变量a)就可以了。。
同样的,现在你有个变量BinTree T,但是T定义的时候初始化为NULL,因为此时还没有创建二叉树。
然后CreateBinTree()函数进行创建二叉树的时候,输入字符的时候,你就创建一个节点,如果创建来的T为NULL,那么说明此时创建的节点就是根节点,想要把这个节点的地址赋值为T,那么就是说你要修改指针T的值了,修改指针的值,那么你就需要把指针的地址传递给函数当参数了,也就是需要二级指针了。。

读书人网 >C语言

热点推荐