BTNode *CreateBTfromPre(char *pre,char *in,int n,int m)
{
BTNode *s;
char *p,*q,*minp;
int minpre,minin ,k;
if(n<=0) return NULL;
minpre=m+1;
for(p=in;p<in+n;p++)
for(q=pre;q<pre+m;q++)
if(*p==*q)
{
k=q-pre;//找到in的每个元素在pre中的位置
if(k<minpre)//位置最靠左的那个元素是(子树)根
{
minpre=k;
minp=p;//根的位置
minin=p-in;//左子树结点个数
}
break;
}
s=(BTNode *)malloc(sizeof(BTNode));
s->data=pre[minpre];
cout<<pre[minpre];
s->lchild=CreateBTfromPre(pre,in,minin,m);
s->rchild=CreateBTfromPre(pre,minp+1,n-minin-1,m);
return s;
}
CreateBTfromPre
最新推荐文章于 2023-10-29 17:06:01 发布