我的二叉树代码运行不出来,帮我看看哪里错了

include <stdio.h>

include <stdlib.h>

typedef struct BiTNode{
int data;
struct BiTNode * lchild,* rchild;
}BiTNode,* BiTree;

void initTree(BiTree tree) { //先序遍历创建二叉树
int e;
scanf("%d",&e);
if(e>0){ //输入小于等于0的数表示为空
tree=(BiTree)malloc(sizeof(BiTNode));
tree->data=e;
initTree(tree->lchild);
initTree(tree->rchild);
}
else tree=NULL;
}

void LDR(BiTree tree){ //中序遍历
if(tree){
LDR(tree->lchild);
printf("%4d ",tree->data);
LDR(tree->rchild);
}
}

main(){
BiTree tree=NULL;
initTree(tree);
LDR(tree);
}

输入6 3 0 4 0 0 1 7 0 0 0  最后运行没有输出

修改处见注释,供参考:

#include <stdio.h>
#include <stdlib.h>
typedef struct BiTNode {
    int data;
    struct BiTNode* lchild, * rchild;
}BiTNode, * BiTree;

                   //void initTree(BiTree tree) //修改
void initTree(BiTree* tree) { //先序遍历创建二叉树
    int e;
    scanf("%d", &e);
    if (e > 0) { //输入小于等于0的数表示为空
        (*tree) = (BiTree)malloc(sizeof(BiTNode));
                        //tree=(BiTree)malloc(sizeof(BiTNode));  修改
        (*tree)->data = e;
                        //tree->data=e;      修改
        initTree(&(*tree)->lchild);
                        //initTree(tree->lchild);  修改
        initTree(&(*tree)->rchild);
                       //initTree(tree->rchild);  修改
    }
    else (*tree) = NULL;
                       //else tree=NULL;   修改
}

void LDR(BiTree tree) { //中序遍历
    if (tree) {
        LDR(tree->lchild);
        printf("%4d ", tree->data);
        LDR(tree->rchild);
    }
}

int main() {
    BiTree tree = NULL;
    initTree(&tree);  //initTree(tree); 修改
    LDR(tree);
    return 0;
}