1099 Build A Binary Search Tree
Posted CSU迦叶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1099 Build A Binary Search Tree相关的知识,希望对你有一定的参考价值。
1. 本题给出了树的样子,给出了用来填充的数列,并且告诉是一棵二叉查找树。
2. 先用静态存储的方式将树的框架建立起。然后对数列进行小到大排序,利用BST中序遍历是升序的性质,通过中序遍历将数值填充的树中。
3. 层序输出的时候注意,用来控制是否输出空格的变量(1)初始化为0(2)定义在函数外
AC代码
#include<cstdio>
#include<map>
#include<set>
#include<string>
#include<cstring>
#include<iostream>
#include<vector>
#include<stack>
#include<queue>
#include<algorithm>
#include<cmath>
typedef long long LL;
using namespace std;
const int maxn = 110;
struct Node{
int data = -1,lchild,rchild;
}node[maxn];
int n,data[maxn];
int num = 0;
void inOrder(int root){
if(root==-1)return;
inOrder(node[root].lchild);
node[root].data = data[num++];
inOrder(node[root].rchild);
}
void levelOrder(){
queue<int> que;
que.push(0);
int num = 0;
while(!que.empty()){
int top = que.front();
printf("%d",node[top].data);
num++;
if(num!=n)printf(" ");
que.pop();
if(node[top].lchild!=-1)que.push(node[top].lchild);
if(node[top].rchild!=-1)que.push(node[top].rchild);
}
}
int main(){
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d %d",&node[i].lchild,&node[i].rchild);
}
for(int i=0;i<n;i++)scanf("%d",&data[i]);
sort(data,data+n);
inOrder(0);
levelOrder();
return 0;
}
以上是关于1099 Build A Binary Search Tree的主要内容,如果未能解决你的问题,请参考以下文章
PAT1099:Build A Binary Search Tree
PAT 甲级 1099 Build A Binary Search Tree
PAT Advanced 1099 Build A Binary Search Tree (30分)
1099. Build A Binary Search Tree (30)二叉树——PAT (Advanced Level) Practise
PAT-1099(Build A Binary Search Tree)
1099. Build A Binary Search Tree (30)二叉树——PAT (Advanced Level) Practise