#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct node{
int index, value;
};
bool cmp(node a, node b)
{
return a.index < b.index;
}
vector<int> post, in;
vector<node> ans;
void func(int root, int start, int end, int k)
{
if (start > end)
{
return;
}
int i = start;
while (i < end && in[i] != post[root])
{
i++;
}
ans.push_back({k, post[root]});
func(root - 1 - end + i, start, i - 1, 2 * k + 1);
func(root - 1, i + 1, end, 2 * k + 2);
}
int main()
{
int n;
scanf("%d", &n);
post.resize(n);
in.resize(n);
for (int i = 0; i < n; i++)
{
scanf("%d", &post[i]);
}
for (int i = 0; i < n; i++)
{
scanf("%d", &in[i]);
}
func(n - 1, 0, n - 1, 0);
sort(ans.begin(), ans.end(), cmp);
for (int i = 0; i < ans.size(); i++)
{
if (i)
{
printf(" ");
}
printf("%d", ans[i].value);
}
return 0;
}
PAT A1020
最新推荐文章于 2022-11-16 16:16:12 发布