1.中序遍历建树
2.bfs层序输出
3.不能用//1020 Tree Traversals (25 分)的方法输出层序,因为其index会报int
#include <bits/stdc++.h>
using namespace std;
struct node{
int val;
int l,r;
};
vector<node > t;
int key[105];
int cnt;
int n;//map<int,int > level;
void inorder(int rt){
if(rt==-1)
return ; inorder(t[rt].l);
t[rt].val = key[cnt++];
// level[index] = key[cnt++];
inorder(t[rt].r);
}
void bfs(){
queue<node> q;
node tp;
q.push(t[0]);
int f = 0;
while(!q.empty()){
tp = q.front();
q.pop();
if(f!=0) printf(" ");
f = 1;
printf("%d",tp.val);
if(tp.l!=-1) q.push(t[tp.l]);
if(tp.r!=-1) q.push(t[tp.r]);
}
}
int main()
{
scanf("%d",&n);
t.resize(n);
for(int i=0;i<n;i++){
int l,r;
scanf("%d%d",&l,&r);
t[i].l = l;
t[i].r = r;
}
for(int i=0;i<n;i++){
scanf("%d",&key[i]);
}
sort(key,key+n);
inorder(0);
bfs();
return 0;
}