[已过](https://www.luogu.com.cn/record/122517018)
```cpp
#include<iostream>
using namespace std;
string first;//前序
string mid,last;//中序,后序
int len,n;
void dfs(int t,string a,string b)
{
string l_tree="",r_tree="",back_1tree="",back_2tree="";
int temp;
int l=0,r=0,x=0;
int len=a.length();
// if(t==n)
// {
// for(int i=0;i<len;i++)
// {
// cout<<first[i];
// }
// return;
// }
first[t]=b[b.length()-1];//递归时范围要越分越小
cout<<first[t];//先输出根节点
for(int i=0;i<a.length();i++)
{
if(a[i]==first[t])
{
temp=i;
}
}
for(int i=0;i<temp;i++)
{
l_tree=l_tree+a[i];//字符串处理不能处理空位
x++;
}
for(int i=temp+1,j=0;i<a.length();i++,j++)
{
r_tree=r_tree+a[i];
}
for(int i=0;i<x;i++)
{
back_1tree=back_1tree+b[i];
}
for(int i=x;i<len-1;i++)
{
back_2tree=back_2tree+b[i];
}
if(l_tree!="") dfs(t+1,l_tree,back_1tree);
if(r_tree!="") dfs(t+1+temp,r_tree,back_2tree);//右子树在左子树的右边
}
int main()
{
cin>>mid>>last;
n=mid.length();
dfs(0,mid,last);
return 0;
}
```
by ABCgfed @ 2023-08-24 11:28:14
@[Accepted_please](/user/763566) ~~太折磨了~~ 可以给个关注吗 谢谢
by ABCgfed @ 2023-08-24 11:33:32
谢谢
by Accepted_please @ 2023-08-24 13:42:48
已关
by Accepted_please @ 2023-08-24 13:43:08