@数据结构大神:递归实现二叉树遍历,图示行为什么错?

 # include<stdio.h>
# include<stdlib.h>
# include<malloc.h>
# define Max_Size 2

typedef struct Node{
    int data;
    struct Node *Lchild;
    struct Node *Rchild;
}BiTNode,*BiTree;

int x,k=0,n=0;


void CreateBiTree(BiTree T)//L是节点 
{
 while(k!=Max_Size)
     {
      scanf("%d",&x);++k;//注意写法
      if(!(T=(BiTree)malloc(sizeof(BiTree)))) exit(0);//已满,不能分配
      else 
      {
       T->data=x;
       CreateBiTree(T->Lchild);
       CreateBiTree(T->Rchild);
      } 
     }
}


void Visit(BiTree T)
{
    printf("%d,",x);
}


void PreOrder(BiTree T)

{
    if(NULL!=T)
    {
        printf("%d  ",T->data);
        PreOrder(T->Lchild);
        PreOrder(T->Rchild);
    }
}


/*int PreOrder(BiTree T.int (* Visit)(int e))
{
    int Print(int e)
    {
        printf("%d,",e);
        return 1;
    }//是否打印

        if(T){
              if(Visit(T->data))
               if(PreOrder(T->Lchild.visit))
                if(PreOrder(T->Lchild.visit)) return 1;
              return 0;
             }
        else return 1;

}*/


void Leaf(BiTree T)
{
    if(T!=NULL)
    {
        Leaf(T->Lchild);
        Leaf(T->Rchild);

        if((T->Lchild==NULL)&&(T->Rchild==NULL))
        n++;
    }

    printf("the leafnumber is:%d",n);
}


BiTree Transform(BiTree T)
{
    BiTree Temp;
    if(T!=NULL)
    {
        Transform(T->Lchild);
        Transform(T->Rchild);
        Temp=T->Lchild;
        T->Lchild=T->Rchild;
        T->Rchild=Temp;
    }
    return T;
}


int main(BiTree T)
{   
    CreateBiTree(T);
    PreOrder(T);
    Transform(T);
    Leaf(T);
    getch();
} 

图片说明

 T没有初始化
int main(BiTree T)
->
int main()

CreateBiTree(T);前面加上
BiTree T

void CreateBiTree(BiTree T)
->
void CreateBiTree(BiTree& T)