主题:二叉树的建立问题
bool createBiTree(tree *T,datatype *list,int i){
if(list[i]=='#'||i>strlen(list)){
T=NULL;
return true;
}
else{
T->data=list[i];
T->lChild=(tree *)malloc(sizeof(tree));
if(!T->lChild) return false;
createBiTree(T->lChild,list,2*i+1);
T->rChild=(tree *)malloc(sizeof(tree));
if(!T->rChild) return false;
createBiTree(T->rChild,list,2*i+2);
}
}
帮忙看一下里面那里除了错,
list是存放结点值的数组,
为什么建立以后有值的结点都正常,但是那些结点为NULL的值都改变了。。
比如:当遇到某个结点的值为‘#’的时候,那么T为NULL,返回上一层调用它的函数,
createBiTree(T->lChild,list,2*i+1); 然后我在这里查看T->lChild的值却发现它不为NULL,这是为什么?
if(list[i]=='#'||i>strlen(list)){
T=NULL;
return true;
}
else{
T->data=list[i];
T->lChild=(tree *)malloc(sizeof(tree));
if(!T->lChild) return false;
createBiTree(T->lChild,list,2*i+1);
T->rChild=(tree *)malloc(sizeof(tree));
if(!T->rChild) return false;
createBiTree(T->rChild,list,2*i+2);
}
}
帮忙看一下里面那里除了错,
list是存放结点值的数组,
为什么建立以后有值的结点都正常,但是那些结点为NULL的值都改变了。。
比如:当遇到某个结点的值为‘#’的时候,那么T为NULL,返回上一层调用它的函数,
createBiTree(T->lChild,list,2*i+1); 然后我在这里查看T->lChild的值却发现它不为NULL,这是为什么?