#include<stdio.h>
#include<queue>
#include<algorithm>
using namespace std;
int n, index=0, number[110]={0}, sum=0;
struct pnode{
int data;
int left, right;
}node[110];
void inorder(int root){
if(node[root].left!=-1)inorder(node[root].left);
node[root].data=number[index++];
if(node[root].right!=-1)inorder(node[root].right);
}
void level_order(int root){
queue<int> que;
que.push(root);
while(!que.empty()){
int front=que.front();
que.pop();
printf("%d",node[front].data);sum++;
if(sum<n)printf(" ");
if(node[front].left!=-1)que.push(node[front].left);
if(node[front].right!=-1)que.push(node[front].right);
}
}
int main(){
int i ;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d%d",&node[i].left, &node[i].right);
}
for(i=0;i<n;i++){
scanf("%d",&number[i]);
}
sort(number,number+n);
inorder(0);
level_order(0);
return 0;
}
PAT-A1099
最新推荐文章于 2024-06-10 11:18:12 发布