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,这是为什么?