zoukankan      html  css  js  c++  java
  • 76 是否完全二叉搜索树(30 分)

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

    输入格式:

    输入第一行给出一个不超过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
    
     
     
     
     
    代码
     
     

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    int a[100],b;
    int n;
    void add(int i,int d)
    {
    if(a[i] == -1)
    {
    a[i] = d;
    return;
    }
    if(d > a[i])add(i*2,d);
    else add(i*2+1,d);
    }
    int main()
    {
    scanf("%d",&n);
    memset(a,-1,sizeof(a));
    for(int i = 0;i < n;i ++)
    {
    scanf("%d",&b);
    add(1,b);
    }
    int c = 0,i = 0;
    while(c < n)
    {
    while(a[i] == -1)i++;
    if(c)printf(" %d",a[i]);
    else printf("%d",a[i]);
    i ++;
    c ++;
    }
    if(i == n + 1)printf("\nYES");
    else printf("\nNO");
    }

  • 相关阅读:
    开源项目中标准文件命名和实践
    linux远程拷贝命令-scp
    Linux访问Windows共享目录的方法——smbclient
    ADB Fix error : insufficient permissions for device
    APT典型应用示例
    我的参考书籍列表
    GCC Reference
    GNU make简介
    Windows下搭建Android NDK开发环境及命令行编译
    Git命令行基本操作
  • 原文地址:https://www.cnblogs.com/linguiquan/p/8934032.html
Copyright © 2011-2022 走看看