二叉树的相关问题,请大佬看看

麻烦大佬帮忙看一下,不知道咋写了

#include<stdio.h>
#include<stdlib.h>
#define OK 1
#define ERROR 0
#define OVERFLOW -1
#define NULL 0
#define MAX_TREE_SIZE 100
#define ElemType int
typedef ElemType SqBiTree[MAX_TREE_SIZE];
SqBiTree t;
typedef struct BiTNode{
    ElemType data;
    struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;

int CreateBiTree(BiTree &T){
    ElemType ch;
    scanf("%c",&ch);
    if(ch=='#')T=NULL;
    else{
        if(!(T=new BiTNode))exit(OVERFLOW);
        T->data=ch;
        CreateBiTree(T->lchild);
        CreateBiTree(T->rchild);
    }
    return OK;
}

void PreOrderTraverse(BiTree T){
    if(T){
        printf("%c",T->lchild);
        PreOrderTraverse(T->lchild);
        PreOrderTraverse(T->rchild);
    }
}//先序遍历
void InOrderTraverse(BiTree T){
    if(T){
        InOrderTraverse(T->lchild);
        printf("%c",T->data);
        InOrderTraverse(T->rchild);
    }
}//中序遍历
void PostOrderTraverse(BiTree T){
    if(T){
        PostOrderTraverse(T->lchild);
        PostOrderTraverse(T->rchild);
        printf("%c",T->data);
    }
}//后序遍历

int CountLeaf(BiTree T){
    int n,m;
    if(!T)return 0;
    if(!T->lchild &&!T->rchild)return OK;
    else{
        m=CountLeaf(T->lchild);
        n=CountLeaf(T->rchild);
        return(m+n);
    }//else
}//CountLeaf

int Depth(BiTree T){
    int depthLeft,depthRight,depthval;
    if(!T)depthval=0;
    else{
        depthLeft=Depth(T->lchild);
        depthRight=Depth(T->rchild);
        depthval=(depthLeft>depthRight?depthLeft:depthRight)+1;
    }
    return depthval;
}//深度

void main(){
    BiTree T;
    CreateBiTree(T);

    printf("先序遍历");
    PreOrderTraverse(T);
    printf("\n");

    printf("中序遍历");
    InOrderTraverse(T);
    printf("\n");

    printf("后序遍历");
    PostOrderTraverse(T);
    printf("\n");

    printf("叶子结点的个数");
    CountLeaf(T);
    printf("\n");

    printf("深度");
    Depth(T);
}

所谓先中后,是指
printf("%c",T->data);
的位置
比如
printf("%c",T->data);
InOrderTraverse(T->lchild);
nOrderTraverse(T->rchild);
这是先序