#include<cstdio>
#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
#include<string>
#include<cstring>
#include<cmath>
#include<map>
#define ll long long
using namespace std;
struct node
{
int ls,rs;
node()
{
ls = 0;
rs = 0;
}
}tree[50];
int post[50],in[50];
int rt;
void bfs()
{
queue<int>q;
q.push(rt);
while(!q.empty())
{
int v = q.front();
q.pop();
if(v == rt)printf("%d",v);
else printf(" %d",v);
if(tree[v].ls)q.push(tree[v].ls);
if(tree[v].rs)q.push(tree[v].rs);
}
}
int build(int l,int r,int L,int R)
{
int i,x = post[r];
for(i = L;i<=R;i++)if(in[i] == x)break;
if(i-L>0)tree[x].ls = build(l,l+i-L-1,L,i-1);
if(R-i>0)tree[x].rs = build(l+i-L,r-1,i+1,R);
return x;
}
int main()
{
int n,i,j;
while(scanf("%d",&n)!=EOF)
{
for(i = 1;i<=n;i++)scanf("%d",&post[i]);
for(i = 1;i<=n;i++)scanf("%d",&in[i]);
rt = build(1,n,1,n);
bfs();
}
return 0;
}
pat1020
最新推荐文章于 2021-01-16 16:43:35 发布