运行总是有错误,不知道是哪里出了问题

#include <stdio.h>
#include <stdlib.h>

typedf struct BiTNode
{
TElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;

void PreOrderTraverse(BiTree T)//前序遍历
{
if(T==NULL)
return;
printf("%c",T->data);
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}

void InOrderTraverse(BiTree T)//中序遍历
{
if(T==NULL)
return;
InOrderTraverse(T->lchild);
printf("%c",T->data);
InOrderTraverse(T->rchild);
}

void PostOrderTraverse(BiTree T)//后序遍历
{
if(T==NULL)
return;
PostOrderTraverse(T->lchild);
PostOrderTraverse(T->rchild);
printf("%c",T->data);
}

int main(void)
{
BiTree T;
printf("请输入待创建二叉树的先序序列:\n");
CreateBiTree(&T);
printf("先序遍历\n");
PreOrderTraverse(T);
printf("\n中序遍历\n");
InOrderTraverse(T);
printf("\n后序遍历\n");
PostOrderTraverse(T);
return 0;
}

没看到CreateBiTree方法的代码呢。

#include <stdio.h>
#include <stdlib.h>

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

void PreOrderTraverse(BiTree T)//前序遍历
{
if(T==NULL)
return;
printf("%c",T->data);
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}

void InOrderTraverse(BiTree T)//中序遍历
{
if(T==NULL)
return;
InOrderTraverse(T->lchild);
printf("%c",T->data);
InOrderTraverse(T->rchild);
}

void PostOrderTraverse(BiTree T)//后序遍历
{
if(T==NULL)
return;
PostOrderTraverse(T->lchild);
PostOrderTraverse(T->rchild);
printf("%c",T->data);
}

int main(void)
{
BiTree T;
printf("请输入待创建二叉树的先序序列:\n");
CreateBiTree(&T);
printf("先序遍历\n");
PreOrderTraverse(T);
printf("\n中序遍历\n");
InOrderTraverse(T);
printf("\n后序遍历\n");
PostOrderTraverse(T);
return 0;
}