#include<cstdio>
#include<cstring>
char a[1000],b[1000];
int total,flag=0;
void find(int x,int y)
{
if(x>y) return;
flag++;
if(x==y)
{
printf("%c",b[x]);
return;
}
char m;
int i;
m=a[flag];
for(i=x;i<=y;i++)
{
if(b[i]==m)
{
find(x,i-1);
find(i+1,y);
printf("%c",m);
break;
}
}
}
int main()
{
int i,j,k;
char x,y;
scanf("%s",a);
scanf("%s",b);
x=a[0];
total=strlen(a);
for(i=0;i<total;i++)
{
if(b[i]==x)
{
find(0,i-1);
find(i+1,total-1);
printf("%c",x);
break;
}
}
}
注意 使用递归算法 从a数组中找根节点 再在b数组中划分子节点
if(x>y) return;放在flag++之前防根节点一侧无子节点后指针进入下一个节点搜索