https://vjudge.net/problem/UVA-536
递归建树 ,
利用中序和后序的规律,递归成树,按照后续遍历的方法输出
在先序的第一个 字母,可以找到中序的左右子树的分割,
然后这样一半一半的分割递归。
和洛谷先序排列一个做法
#include <bits/stdc++.h>
using namespace std;
string a,b;
void dfs(int x,int y,int l,int r)
{
if(x>y||l>r) return ;
for(int i=l;i<=r;i++)
{
if(b[i]==a[x])
{
dfs(x+1,x+i-l,l,i-1);
dfs(x+i-l+1,y,i+1,r);
break;
}
}
cout<<a[x];
}
int main()
{
while(cin>>a>>b)
{
dfs(0,a.size()-1,0,a.size()-1);
cout<<endl;
}
}