P1827 [USACO3.4]美国血统 American Heritage

直接上代码吧
`

include<bits/stdc++.h>

using namespace std;
void houxu(int x,int y,int p,int q);//x和y代表前序,p和q代表中序
string a,b; //a是中序,b是前序
int main(){
cin>>a>>b;
int len=a.length()-1;
houxu(0,len,0,len);
}
void houxu(int x,int y,int p,int q){
if(x>y||p>q) return ;
int i=a.find(b[x]); //因为前序第一个元素是根,再去中序找到这个根,这样左边就是做子树,右边就是右子树。
houxu(x+1,x+i-p,p,i-1);//左子树递归
houxu(x+i-p+1,y,i+1,q);//右子树递归
cout<<a[i]; //输出该节点
}

`

原文地址:https://www.cnblogs.com/zh1014/p/13474608.html