代码:
#include<bits/stdc++.h>
using namespace std;
int lis[200009],lis2[200009],xb[200009];
void dfs(int left1,int right1,int left2,int right2){
if(left1>right1) return ;
if(left1==right1){
cout<<lis[left1]<<" ";
return ;
}
int root=lis2[right2],rootxb=xb[root];
cout<<root<<" ";
dfs(left1,rootxb-1,left2,left2+rootxb-left1-1);
dfs(rootxb+1,right1,left2+rootxb-left1,right2-1);
}
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++) cin>>lis[i];
for(int i=1;i<=n;i++) cin>>lis2[i];
for(int i=1;i<=n;i++) xb[lis[i]]=i;
dfs(1,n,1,n);
return 0;
}