首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

二叉树的建立有关问题

2013-08-09 
二叉树的建立问题typedef struct Node{DataType datastruct Node *lchildstruct Node *rchild}BiTNode,

二叉树的建立问题
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的值了,修改指针的值,那么你就需要把指针的地址传递给函数当参数了,也就是需要二级指针了。。

热点排行