前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PAT (Advanced Level) Practice 1099 Build A Binary Search Tree (30 分)

PAT (Advanced Level) Practice 1099 Build A Binary Search Tree (30 分)

作者头像
glm233
发布2020-09-28 11:16:37
2850
发布2020-09-28 11:16:37
举报
文章被收录于专栏:glm的全栈学习之路

1099 Build A Binary Search Tree (30分)

A Binary Search Tree (BST) is recursively defined as a binary tree which has the following properties:

  • The left subtree of a node contains only nodes with keys less than the node's key.
  • The right subtree of a node contains only nodes with keys greater than or equal to the node's key.
  • Both the left and right subtrees must also be binary search trees.

Given the structure of a binary tree and a sequence of distinct integer keys, there is only one way to fill these keys into the tree so that the resulting tree satisfies the definition of a BST. You are supposed to output the level order traversal sequence of that tree. The sample is illustrated by Figure 1 and 2.

figBST.jpg
figBST.jpg

Input Specification:

Each input file contains one test case. For each case, the first line gives a positive integer N (≤100) which is the total number of nodes in the tree. The next N lines each contains the left and the right children of a node in the format left_index right_index, provided that the nodes are numbered from 0 to N−1, and 0 is always the root. If one child is missing, then −1 will represent the NULL child pointer. Finally N distinct integer keys are given in the last line.

Output Specification:

For each test case, print in one line the level order traversal sequence of that tree. All the numbers must be separated by a space, with no extra space at the end of the line.

Sample Input:

代码语言:javascript
复制
9
1 6
2 3
-1 -1
-1 4
5 -1
-1 -1
7 -1
-1 8
-1 -1
73 45 11 58 82 25 67 38 42

Sample Output:

代码语言:javascript
复制
58 25 82 11 38 67 45 73 42

通信通法:先sort排好序,然后中序插入,之后队列遍历输出,完美AC~

代码语言:javascript
复制
#include<bits/stdc++.h>
#define ll long long
#define rg register ll
using namespace std;
struct node
{
    ll l,r,val;
    node()
    {
        l=r=-1;
    }
}p[105];
ll a[105],cnt;
inline void init(ll x)
{
    if(x!=-1)
    {
        init(p[x].l);
        p[x].val=a[cnt++];
        init(p[x].r);
    }
    else return;
}
queue<ll>q;
vector<ll>ans;
int main()
{
    ll n;
    cin>>n;
    for(rg i=0;i<n;i++)
    {
        cin>>p[i].l>>p[i].r;
    }
    for(rg i=0;i<n;i++)cin>>a[i];
    sort(a,a+n);
    init(0);
    q.push(0);
    while(!q.empty())
    {
        ans.push_back(p[q.front()].val);
        if(p[q.front()].l!=-1)q.push(p[q.front()].l);
        if(p[q.front()].r!=-1)q.push(p[q.front()].r);
        q.pop();
    }
    for(rg i=0;i<ans.size();i++)
    {
        i==ans.size()-1?cout<<ans[i]<<endl:cout<<ans[i]<<" ";
    }
    while(1)getchar();
    return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/02/02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Input Specification:
  • Output Specification:
  • Sample Input:
  • Sample Output:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档