#include <iostream>
#include <sstream>
#include <algorithm>
#include <fstream>
#include <map>
#include <math.h>
#include <string.h>
#include <stdlib.h>
//默认以先序序列编号
using namespace std;
int cnt=0;
char pre[100],mid[100],val[100];
int lch[100],rch[100];
int buildtree(int L1,int R1,int L2,int R2){
if(L1>R1) return 0;
char root_val=pre[L1];
int i=L2;
while(mid[i]!=root_val) i++;
int lcnt=i-L2;
lch[L1]=buildtree(L1+1,L1+lcnt,L2,i-1);
rch[L1]=buildtree(L1+lcnt+1,R1,i+1,R2);
return L1;
}
void post(int root){
if(root==0) return;
post(lch[root]);
post(rch[root]);
cout<<val[root]<<" ";
}
int main()
{
string p,m;
getline(cin,p);
getline(cin,m);
for(int i=0;i<p.length();i++){
val[i+1]=pre[i+1]=p[i];
}
for(int i=0;i<m.length();i++){
mid[i+1]=m[i];
}
int root=buildtree(1,p.length(),1,p.length());
post(root);
return 0;
}
网友评论