专栏首页glm的全栈学习之路PAT (Advanced Level) Practice 1099 Build A Binary Search Tree (30 分)

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

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.

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:

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:

58 25 82 11 38 67 45 73 42

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

#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;
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 2019.8.15乘兴打Codeforces Round #569 (Div. 2)小记

    Recently, on the course of algorithms and data structures, Valeriy learned how t...

    glm233
  • Codeforces Beta Round #51 C. Pie or die(博弈 思维)

    Volodya and Vlad play the following game. There are k pies at the cells of n  × ...

    glm233
  • Codeforces Round #424 (Div. 1, rated, based on VK Cup Finals) B. Cards Sorting 树状数组+技巧

    Vasily has a deck of cards consisting of n cards. There is an integer on each of...

    glm233
  • VS.Net 2005 Design-Time Integration

    Introduction This article provides an overview of the VS.NET 2005 Design-Time I...

    张善友
  • ZOJ 3202 Second-price Auction

    Time Limit: 1 Second      Memory Limit: 32768 KB

    ShenduCC
  • 论综合 | 是什么让一个数字前端实现硅农开始学习Floorplan 的?

    如题,是什么让一个数字前端实现硅农开始学习Floorplan 的?是制造工艺的进步,是实现方法学的被迫更新,是养家糊口生的本能,正可谓:头发落完终不悔,为伊消得...

    老秃胖驴
  • 鲁棒因果推理中非线性二元优化问题的求解算法(cs)

    确定变量之间的因果关系是决策过程中的关键步骤。虽然因果推理需要随机实验,但由于观测数据的广泛可用性和实验的不可行性,研究人员和决策者越来越多地使用观察性研究来检...

    柴艺
  • ABAP如何在调试查看EXPORT/IMPORT 内存数据

    These memory IDs can be accessed in the debugger, but the option isn't accessibl...

    matinal
  • Codeforces 1291 Round #616 (Div. 2) C. Mind Control(超级详细)

    You and your n−1 friends have found an array of integers a1,a2,…,an. You have de...

    风骨散人Chiam
  • ZOJ 3623 Battle Ships

    Battle Ships Time Limit: 2 Seconds Memory Limit: 65536 KB Battle Ships is a ne...

    风骨散人Chiam

扫码关注云+社区

领取腾讯云代金券