大虾帮我看看这个二叉树遍历器到底哪儿错了啊?怎么总有两项错误?
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct BNode
{
char data;
struct BNode *lchild,*rchild;
}
BNode *BTree;
BTree CreateBTree(BTree *T)
{
BasedOnPreOrder
BTree T;
char ch;
char ch=getchar();
if(ch=='#') 
(*T)=NULL;
else
{
(*T)=(struct BNode *)malloc(sizeof(struct BNode));
(*T)->data=ch;
(*T)->lchild=CreateBTree();
(*T)->rchild=CreateBTree();
return(*T);
}
}

int Height(BTree T) 

int h1,h2; 
if(r==NULL) 
return 0; 
else{ 
h1=Height(r->lchild); 
h2=Height(r->rchild); 
if(abs(h1-h2)>1) flag=1; 
return 1+(h1>h2?h1:h2); 



void PreOrder(BTree T)
{
if(T){
printf("%c",T->data);
PreOrder(T->lchild);
PreOrder(T->rchild);
}
}
void InOrder(BTree T)
{
if(T)
{
InOrder(T->lchild);
printf("%c",T->data);visit(root);
InOrder(T->rchild);
}
}
void PostOrder(BTree T)
{
if(T)
{
PostOrder(T->lchild);
PostOrder(T->rchild);
printf("%c",T->data);visit(root);    
}
}
BTree build1(BTree r,int left,int right) {
int yes=0,i;
r=NULL;
if (position>=len) return NULL;
for (i=left;i<=right;++i)
if (s[i]==t[position]) {yes=1;break;}
if (yes) {
r=(BNode*) malloc(sizeof(BNode));
r->id=s[i];
++position;
r->lchild=build(r->lchild,left,i);
r->rchild=build(r->rchild,i+1,right);
}
return r;
}
void PreInToPost(char Pre[],char In[]){
int len = strlen(In);
BTree T=build1(T,0,len);
PostOrder(T);
}
void build2(char in[],int is,int ie,char post[],int posts,int poste,BTree *r) {
int i; 
if(is>ie || posts>poste) *r=NULL; 
else{ 
*r=malloc(sizeof(BNode)); 
(*r)->d=post[poste]; 
for(i=is;i<=ie;i++) 
if(post[poste]==in[i]){ 
build2(in,is,i-1,post,posts,posts+i-is-1,&(*r)->lchild); 
build2(in,i+1,ie,post,posts+i-is,poste-1,&(*r)->rchild); 
break; 

if(i>ie){ 
printf("error:input contains an error!\n"); 
exit(9); 


}
void InPostToPre(char In[],char Post[]){
int len = strlen(Post);
BTree T=(BNode*) malloc(sizeof(BNode));
build2(In,0,len,Post,0,len,T);
PreOrder(T);
}
main()
{
int x;
int i=1;
int h=0;
clrscr();
char Pre[];
char In[];
char Post[];
BTree T;
while(i!=0)
{
clrscr();
printf("             *********************iphone*****************************\n");
printf("             *                                                      *\n");
printf("             *              1:chuang jian shu qiu shu gao           *\n");
printf("             *              2:xian xu bian li                       *\n");
printf("             *              3:zhong xu bian li                      *\n"); 
printf("             *              4:hou xu bian li                        *\n");
printf("             *              5:xian xu yu zhong xu qiu hou xu        *\n");
printf("             *                6:zhong xu yu hou xu qiu xian xu        *\n");
printf("             *              0:The end.                              *\n");
printf("             *               qing xuan ze                           *\n"); 
printf("             ********************************************************\n");
scanf("%d",&x);
switch(x)
{
case 1:
clrscr();
printf(" shu ru xian xu bian li xu lie\n");
T = CreateBTree(&T);
h = height(&T);
printf(" shu gao wei: %d\n",h);
printf("\n shuzijian fanhui\n");
scanf("%d",&w);
printf("%d",w);
break;
case 2:
clrscr();
printf("xian xu bian li xu lie\n");            PreOrder(T);
printf("\n  shuzijian fanhui\n");
scanf("%d",&w);
printf("%d",w);
break;
case 3:
clrscr();
printf("zhong xu bian li xu lie\n");
InOrder(T);
printf("\n shuzijian fanhui\n");
scanf("%d",&w);
printf("%d",w);
break;
case 4:
clrscr();
printf("hou xu bian li xu lie\n");
PostOrder(T);
printf("\n shuzijian fanhui\n");
scanf("%d",&w);
printf("%d",w);
break;
case 5:
clrscr();
printf(" shu ru xian xu bian li xu lie:\n");
scanf("%s",Pre);
printf(" shu ru zhong xu bian li xu lie:\n");
scanf("%s",In);
PreInToPost(Pre,In);
printf("\n  shuzijian fanhui\n");
scanf("%d",&w);
printf("%d",w);
break;
case 6:
clrscr();
printf(" shu ru zhong xu bian li xu lie:\n");
scanf("%s",In);
printf(" shu ru hou xu bian li xu lie:\n");
scanf("%s",Post);
PreInToPost(In,Post);
printf("\n shuzijian fanhui\n");
scanf("%d",&w);
printf("%d",w);
break;
case 0:
i=0;
printf("The end.\n"); 
break; 
default:
clrscr();
printf("\nWrong Selection!");
printf("\an  shuzijian fanhui\n");
scanf("%d",&w);
printf("%d",w);
break;
}
}
}