#include <stdio.h>
#include <malloc.h>struct Node
{
Node *lchild;
Node *rchild;
int x;
};int n;
int l1[100];
int l2[100];Node *build(int s1, int e1, int s2, int e2)
{
Node *tmp = (Node*)malloc(sizeof(Node));
tmp->lchild = tmp->rchild = NULL;
tmp->x = l1[s1];
int root = 0;
for(int i = s2; i <= e2; i++) //寻找中序遍历中根节点的位置
{
if(l2[i] == l1[s1])
{
root = i;
break;
}
}
if(root != s2) //左子树不为空 左子树的长度为root-s2-1
tmp->lchild = build(s1+1, s1+root-s2, s2, root-1);
if(root != e2) //右子树不为空
tmp->rchild = build(s1+root-s2+1, e1, root+1, e2);
return tmp;
}void postOrder(Node *T)
{
if(T->lchild != NULL)
postOrder(T->lchild);
if(T->rchild != NULL)
postOrder(T->rchild);
printf("%d ", T->x);
}int main()
{
while(~scanf("%d", &n))
{
for(int i = 0; i < n; i++)
scanf("%d", &l2[i]);
for(int j = 0; j < n; j++)
scanf("%d", &l1[j]);
Node *T = build(0, n-1, 0, n-1);
postOrder(T);
printf("\n");
}
return 0;
}