二叉树的后序遍历
#include<bits/stdc++.h>
using namespace std;
template <typename T> void read(T &x){
x=0;int f=1;char ch=getchar();
for(;!isdigit(ch);ch=getchar())if(ch=='-')f=-1;
for(;isdigit(ch);ch=getchar())x=(x<<1)+(x<<3)+ch-'0';
x*=f;
}
char a[110],b[110];int alen,blen;
char ss[110];int L;
int k[110];
void dfs(int la,int ra,int lb,int rb){
if(la>ra) return;
int ta=k[a[la]]-lb;
dfs(la+1,la+ta,lb,k[a[la]]-1);
int tb=rb-k[a[la]]+1;
dfs(la+ta+1,ra,k[a[la]]+1,rb);
ss[++L]=a[la];
}
int main(){
scanf("%s",a+1);alen=strlen(a+1);
scanf("%s",b+1);blen=strlen(b+1);
for(int i=1;i<=blen;++i)k[b[i]]=i;
L=0;
dfs(1,alen,1,blen);
for(int i=1;i<=L;++i) cout<<ss[i];
cout<<endl;
return 0;
}