第一步:
找根节点(先序遍历:根,左子树,右子树)
第二步:
找根节点的左子树(先序遍历:左子树,根,右子树)
第三步:
找根节点的右子树
模版代码:(满分代码)
#include <bits/stdc++.h>
using namespace std;
string s1;//先序遍历
string s2;//中序遍历
//l1先序遍历 左索引
//r1先序遍历 右索引
//l2中序遍历 左索引
//r2中序遍历 右索引
void calc(int l1,int r1,int l2,int r2)
{
//第一步找根节点(先序遍历:根,左子树,右子树)
int m=s2.find(s1[l1]);
//第二步:找根节点的左子树(先序遍历:左子树,根,右子树)
if(m>l2)//左子树
{
calc(l1+1,l1+(m-l2),l2,m-1);
}
//第三步:找根节点的右子)
if(m<r2)//右子树
{
calc(l1+(m-l2)+1,r1,m+1,r2);
}
cout<<s1[l1];
}
int main()
{
cin>>s1>>s2;
calc(0,s1.length()-1,0,s2.length()-1);
cout<<endl;
return 0;
}