• codevs 2977 二叉堆练习1x


    时间限制: 10 s

    空间限制: 32000 KB
    题目等级 : 白银 Silver
     
     
     
    题目描述 Description

    已知一个二叉树,判断它是否为二叉堆(小根堆)

    输入描述 Input Description

    二叉树的节点数N和N个节点(按层输入)

    输出描述 Output Description

    YES或NO

    样例输入 Sample Input

    样例输入1

    3

    1 4 9

    样例输入2

    3

    6 4 9

    样例输出 Sample Output

    样例输出1

    YES

    样例输出2

    NO

    数据范围及提示 Data Size & Hint

    对于20%的数据  N≤20

    对于50%的数据  N≤1000

    对于100%的数据 N≤50000,每个节点≤10000

    分类标签 Tags

    代码如下

     1 #include <cstdlib>
     2 #include <cstdio>
     3 #include <iostream>
     4 
     5 using namespace std;
     6 
     7 int n,tree[100001],bb,n1;
     8 
     9 int pd()//是否为小根堆 
    10 {
    11     for (int i=n1-1; i>=2; i--)
    12     {
    13         if (tree[i]>tree[i/2] && !bb) return 0;//当n为0时 
    14         if (tree[i]<tree[i/2] && bb) return 0;
    15     }
    16     return 1;
    17 }
    18 
    19 int main()
    20 {
    21     scanf("%d",&n);
    22     n1=n;
    23     for (int i=1; i<=n; i++)
    24         scanf("%d",&tree[i]);
    25     while (tree[n1]==tree[n1/2]) n1--;
    26     if (tree[n1]>tree[n1/2]) bb=1;
    27     if (pd()) cout<<"YES";
    28     else cout<<"NO";
    29     return 0;
    30 }

     

    如果运气好也是错,那我倒愿意错上加错!

    ❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀

  • 相关阅读:
    MYSQL数据类型——字符串类型
    MYSQL——记录长度
    MYSQL数据类型——时间日期类型
    MYSQL数据类型——数值类型
    为什么在 IDEA jsp 中直接使用 out.println 会出错
    花指令行为大赏
    EasyCpp 题解
    [SUCTF2019] hardcpp 题解
    洛谷 P1650 田忌赛马题解
    Dict 协议是什么
  • 原文地址:https://www.cnblogs.com/zxqxwnngztxx/p/6652642.html
Copyright © 2020-2023  润新知