博客
关于我
1110 Complete Binary Tree (25 point(s))
阅读量:657 次
发布时间:2019-03-15

本文共 547 字,大约阅读时间需要 1 分钟。

根据完全二叉树的性质,层序依次给定编号1~n;如果最大编号与n相等,则是完全二叉树。完全二叉树的判断涉及树的遍历和节点的填充情况。以下是详细分析:

  • 完全二叉树的定义:完全二叉树除了最后一层可能不满之外,每一层从左到右的节点数目都达到最大。为了判断给定的二叉树是否为完全二叉树,可以通过遍历树,并记录树的最大深度和最后一个访问的节点。

  • 输入处理:将输入的节点及其子节点信息存储在数组中。使用两个数组lr分别存储左右子节点的位置。检查数组check用于记录每个节点的子节点数。

  • 根节点的确定:找出所有子节点数为0的节点作为根节点。通常整个树只有一个根节点。

  • 深度优先搜索:通过递归深度优先搜索遍历树,记录每个节点,并更新最大索引max_idx和最后访问的节点last

  • 判断完全二叉树:如果输入的节点数n等于最大索引max_idx,说明树是完全二叉树,返回“YES”并输出根节点的编号;否则返回“NO”。

  • 以下测试示例:

    • 测试 CASE 3:n=2,树的结构可能有根节点1,没有右子节点,左子节点可能有2,此时max_idx=2,n=2,返回“YES 2”。

    • 测试 CASE 2:n=1,树只有一个节点,是完全二叉树,返回“YES 1”。

    通过这种方法,可以正确判断给定的二叉树是否为完全二叉树。

    转载地址:http://wtzqz.baihongyu.com/

    你可能感兴趣的文章
    图片链接
    查看>>
    LINUX-WIFI无线接入的一些东西
    查看>>
    word文档手写字母总会大写问题
    查看>>
    Redis中的key
    查看>>
    juc-09-控制并发流程工具类
    查看>>
    第一节 docker安装
    查看>>
    Linux系统时间与硬件时间及时间同步
    查看>>
    Django静态文件的加载以及STATIC_URL、 STATIC_ROOT 、STATICFILES_DIRS的区别
    查看>>
    Spring 和 DI 依赖注入
    查看>>
    中序线索二叉树的遍历
    查看>>
    laravel server error 服务器内部错误
    查看>>
    Linux驱动实现GPIO模拟I2C读写操作
    查看>>
    iJ配置Maven环境详解
    查看>>
    仿QQ登陆界面
    查看>>
    什么题目的暂时还没想好
    查看>>
    N皇后问题解法(递归+回朔)
    查看>>
    面试题 08.01. 三步问题
    查看>>
    剑指 Offer 11. 旋转数组的最小数字
    查看>>
    word文档注入(追踪word文档)未完
    查看>>
    作为我的第一篇csdn博客吧
    查看>>