#include <iostream>
#include <algorithm>
#include <queue>
using namespace std;
struct node{
int lchild,rchild,data;
}no[150];
int key[150],N,index=0;
void inorder(int root){
if(root==-1) return;
inorder(no[root].lchild);
no[root].data=key[index++];
inorder(no[root].rchild);
}
void levelorder(){
queue<int> q;
q.push(0);
int count=0;
while(!q.empty()){
int t=q.front();
q.pop();
if(++count!=N) printf("%d ",no[t].data);
else printf("%d",no[t].data);
if(no[t].lchild!=-1) q.push(no[t].lchild);
if(no[t].rchild!=-1) q.push(no[t].rchild);
}
}
int main(){
scanf("%d",&N);
for(int i=0;i<N;i++)
scanf("%d%d",&no[i].lchild,&no[i].rchild);
for(int i=0;i<N;i++)
scanf("%d",&key[i]);
sort(key,key+N);
inorder(0);
levelorder();
return 0;
}
PAT A1099
最新推荐文章于 2020-11-25 20:00:32 发布