#include <bits/stdc++.h>
using namespace std;
struct Node
{
int v;
int L;
int R;
} node[102];
int R[102];
int DNS(int i,int count) //中根遍历。
{
if(node[i].L!=-1)
count=DNS(node[i].L,count);
node[i].v=R[count];
count++;
if(node[i].R!=-1)
count=DNS(node[i].R,count);
return count;
}
void WDS(){
queue<Node> que;
que.push(node[0]);
while(!que.empty()){
Node n=que.front();
if(n.L!=-1)
que.push(node[n.L]);
if(n.R!=-1)
que.push(node[n.R]);
que.pop();
que.empty()?cout<<n.v:cout<<n.v<<' ';
}
}
int main()
{
int n;
cin>>n;
for(int i=0; i<n; i++)
{
node[i].v=i;
cin>>node[i].L>>node[i].R;
}
for(int i=0; i<n; i++)
cin>>R[i];
sort(R,R+n);
DNS(0,0);
WDS();//层次遍历
return 0;
}
PAT Build A Binary Search Tree[C++]
最新推荐文章于 2020-11-25 20:00:32 发布