• 天梯赛 L3-010. 是否完全二叉搜索树


    L3-010. 是否完全二叉搜索树

    时间限制
    400 ms
    内存限制
    65536 kB
    代码长度限制
    8000 B
    判题程序
    Standard
    作者
    陈越

    将一系列给定数字顺序插入一个初始为空的二叉搜索树(定义为左子树键值大,右子树键值小),你需要判断最后的树是否一棵完全二叉树,并且给出其层序遍历的结果。

    输入格式:

    输入第一行给出一个不超过20的正整数N;第二行给出N个互不相同的正整数,其间以空格分隔。

    输出格式:

    将输入的N个正整数顺序插入一个初始为空的二叉搜索树。在第一行中输出结果树的层序遍历结果,数字间以1个空格分隔,行的首尾不得有多余空格。第二行输出“YES”,如果该树是完全二叉树;否则输出“NO”。

    输入样例1:
    9
    38 45 42 24 58 30 67 12 51
    
    输出样例1:
    38 45 24 58 42 30 12 67 51
    YES
    
    输入样例2:
    8
    38 24 12 45 58 67 42 51
    
    输出样例2:
    38 45 24 58 42 12 67 51
    NO

    数组建树,遍历途中存在空节点,则结果为NO,否则为YES。自己写的有点复杂,参考了大神的博客,发现原来可以写得这么简洁。

     1 #include<iostream>
     2 #include<cstring>
     3 #include<stdio.h>
     4 #include<string>
     5 #include<math.h>
     6 #include<algorithm>
     7 
     8 using namespace std;
     9 
    10 int tree[1<<20];
    11 int num,n;
    12 
    13 void built(int pos)
    14 {
    15     if(tree[pos]==0)
    16         tree[pos]=num;
    17     else
    18         if(tree[pos] < num)
    19             built(pos<<1);
    20         else
    21             built(pos<<1|1);
    22 }
    23 int main()
    24 {
    25     cin>>n;
    26     for(int i = 1; i <= n; i++)
    27     {
    28         cin>>num;
    29         built(1);
    30     }
    31     
    32     bool flag = false;
    33     for(int i = 1, con = 1; con <= n; i++)
    34     {
    35         if(tree[i]==0)
    36             flag = true;
    37         else
    38         {
    39             cout<<tree[i];
    40             if(con++!=n)
    41                 cout<<' ';
    42         }
    43     }
    44     cout<<endl;
    45     if(flag)
    46         cout<<"NO"<<endl;
    47     else
    48         cout<<"YES"<<endl;
    49     return 0;
    50 }
  • 相关阅读:
    UML图箭头关系
    使用 Python 编写 vim 插件
    linux grep命令
    gevent For the Working Python Developer
    坐标系旋转变换公式图解
    欲哭无泪的p-value = 0.051 | 做几次重复能得到较低的p-value
    RNA-seq要做几次生物学重复?找出来的100%都是真正的应答基因
    Strand Specific mRNA sequencing 之重要性与分析
    为什么二代测序的原始数据中会出现Read重复现象?
    DNA甲基化研究概述
  • 原文地址:https://www.cnblogs.com/Xycdada/p/6580452.html
Copyright © 2020-2023  润新知