BTNode *CreatBT(char *post,char *in,int n,int m) { BTNode *s; char *p,*q,*maxp; int maxpost,maxin ,k; if(n<=0) return NULL; maxpost=-1; for(p=in;p<in+n;p++) for(q=post;q<post+m;q++) if(*p==*q) { k=q-post; if(k>maxpost) { maxpost=k; maxp=p; maxin=p-in; } } s=(BTNode *)malloc(sizeof(BTNode)); s->data=post[maxpost]; s->lchild=CreatBT(post,in,maxin,m); s->rchild=CreatBT(post,maxp+1,n-maxin-1,m); return s; }