ABEDFCHG
CBADEFGH
if n<=0 return;
int p=先序中的字母在中序中的位置。
Build(p,(char *)pre+1,(char *)mid); //递归构造左子树的遍历
Build(n-1-p,pre+p+1,mid+p+1); //递归构造右子树的遍历
#include <stdio.h>
#include <string.h>
#define MAXN 1000
char mid[MAXN],pre[MAXN],ans[MAXN];
void Build(int n,char *pre,char *mid,char *ans)
{
if(n<=0) return;
int p=strchr(mid,pre[0])-mid;
Build(p,pre+1,mid,ans);
Build(n-1-p,pre+p+1,mid+p+1,ans+p);
ans[n-1]=pre[0];
}
int main()
{
while(scanf("%s%s",mid,pre)!=EOF)
{
Build(strlen(pre),pre,mid,ans);
printf("%s\n",ans);
return 0;
}
}