#include<cstdio>
#include<algorithm>
#include<queue>
using namespace std;
#define maxn 200
struct node
{
int data;
int rchild,lchild;
}tree[maxn];
int head=0,N,in[maxn]={0},cnt=0,flag=0;
void in_order(int root)
{
if(root == -1) return;
in_order(tree[root].lchild);
tree[root].data = in[cnt++];
in_order(tree[root].rchild);
}
void level_order(int root)
{
queue<int> qu;
qu.push(root);
while (! qu.empty())
{
int front = qu.front();
qu.pop();
if(flag == 0)
{
flag = 1;
printf("%d",tree[front].data);
}
else
{
printf(" %d",tree[front].data);
}
if(tree[front].lchild != -1) qu.push(tree[front].lchild);
if(tree[front].rchild != -1) qu.push(tree[front].rchild);
}
}
int main()
{
//获取数据,构造二叉树
scanf("%d",&N);
for(int i=0; i<N; i++)
{
int cd1,cd2;
scanf("%d%d",&cd1,&cd2);
tree[i].lchild = cd1;
tree[i].rchild = cd2;
}
//输入数据,最后排序
for(int i=0; i<N; i++)
scanf("%d",&in[i]);
sort(in,in+N);
//中序遍历时给树填入数据
in_order(head);
//层序遍历
level_order(head);
return 0;
}
1099. Build A Binary Search Tree (30)
最新推荐文章于 2017-05-13 19:44:06 发布