zoukankan      html  css  js  c++  java
  • 天梯赛 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 }
  • 相关阅读:
    Java学习开篇
    《我的姐姐》
    世上本无事,庸人自扰之
    这48小时
    补觉
    淡定
    es java api 设置index mapping 报错 mapping source must be pairs of fieldnames and properties definition.
    java mongodb groupby分组查询
    linux 常用命令
    mongodb too many users are authenticated
  • 原文地址:https://www.cnblogs.com/Xycdada/p/6580452.html
Copyright © 2011-2022 走看看