AcWing 1589. 构建二叉搜索树
原题链接
中等
作者:
ZeroAC
,
2021-04-27 14:42:32
,
所有人可见
,
阅读 334
1. 原数据从小到大排序
2. dfs中序遍历赋值
3. bfs输出结果
#include<bits/stdc++.h>
using namespace std;
const int N = 110;
int n,a[N][3],b[N],u = 0;
void dfs(int i){
if(i>n||i==-1) return;
dfs(a[i][1]);
a[i][0] = b[u++];
dfs(a[i][2]);
}
void bfs(int i){
queue<int> q;
q.push(i);
while(q.size()){
int x = q.front();q.pop();
cout<<a[x][0]<<" ";
if(a[x][1]!=-1) q.push(a[x][1]);
if(a[x][2]!=-1) q.push(a[x][2]);
}
}
int main(){
cin>>n;
for(int i = 0,l,r; i < n; i++) cin>>l>>r,a[i][1] = l, a[i][2] = r;
for(int i = 0; i < n; i++) cin>>b[i];
sort(b,b+n);
dfs(0),bfs(0);
return 0;
}