#include<iostream>
#include<fstream>
#include<algorithm>
#include<queue>
using namespace std;
ifstream fin("1099.txt");
//#define cin fin
struct node{
int data;
int left,right;
node(){
left=right=-1;
}
}nd[101];
queue<int> que;
void in_order(int root,int arr[], int &cnt){
int left = nd[root].left, right = nd[root].right;
if(left!=-1) in_order(left, arr, cnt);
nd[root].data = arr[++cnt];
if(right!=-1) in_order(right, arr, cnt);
}
int main(){
int n;cin>>n;
int *arr = new int[n];
int c1,c2;
int cnt = -1;
for(int i=0;i<n;i++){
cin>>c1>>c2;
nd[i].left = c1;
nd[i].right = c2;
}
for(int i=0;i<n;i++)
cin>>arr[i];
sort(arr,arr+n);
in_order(0, arr, cnt);
queue<int> que;
que.push(0);
bool first = true;
while(!que.empty()){
int top = que.front();
int left = nd[top].left;
int right = nd[top].right;
if(first){
cout<<nd[top].data;first = false;
}
else cout<<" "<<nd[top].data;
if(left!=-1) que.push(left);
if(right!=-1) que.push(right);
que.pop();
}
delete arr;
return 0;
}
PAT 1099. Build A Binary Search Tree (30)
最新推荐文章于 2019-05-30 17:36:38 发布