通过与 Jira 对比,让您更全面了解 PingCode

  • 首页
  • 需求与产品管理
  • 项目管理
  • 测试与缺陷管理
  • 知识管理
  • 效能度量
        • 更多产品

          客户为中心的产品管理工具

          专业的软件研发项目管理工具

          简单易用的团队知识库管理

          可量化的研发效能度量工具

          测试用例维护与计划执行

          以团队为中心的协作沟通

          研发工作流自动化工具

          账号认证与安全管理工具

          Why PingCode
          为什么选择 PingCode ?

          6000+企业信赖之选,为研发团队降本增效

        • 行业解决方案
          先进制造(即将上线)
        • 解决方案1
        • 解决方案2
  • Jira替代方案

25人以下免费

目录

为什么说“满二叉树也是完全二叉树”

因为国内早期教材中,满二叉树一般指 perfect binary tree,所以会有满二叉树是完全二叉树的一个特例的说法。类似的情况可能还有树的深度的定义,有的根结点从0开始计数,有的从1开始计数。

一、为什么说“满二叉树也是完全二叉树”

因为国内早期教材中,满二叉树一般指 perfect binary tree,所以会有满二叉树是完全二叉树的一个特例的说法。类似的情况可能还有树的深度的定义,有的根结点从0开始计数,有的从1开始计数。

满二叉树(Full Binary Tree):

一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是说,如果一个二叉树的层数为K,且结点总数是(2^k) -1 ,则它就是满二叉树。

一颗树深度为h,最大层数为k,深度与最大层数相同,k=h;

它的叶子数是: 2^h  第k层的结点数是: 2^(k-1)  总结点数是: 2^k-1 (2的k次方减一)  总节点数一定是奇数。

                                             0

                                     /               \

                                  1                   2

                              /      \            /       \

                            3        4         5           6

                          /  \    /   \     /    \       /   \

                        7    8  9     10  11     12    13     14

完全二叉树(Complete Binary Tree):

完全二叉树:完全二叉树的节点数是任意的,从形式上讲它是个缺失的的三角形,但所缺失的部分一定是右下角某个连续的部

分,最后那一行可能不是完整的,对于k层的完全二叉树,节点数的范围2^ (k – 1) -1 < N< 2^k – 1;

设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,

这就是完全二叉树。

                                              0

                                     /               \

                                  1                   2

                              /      \            /       \

                            3        4         5           6

                          /  \    /   \     /   

                        7    8  9     10  11

延伸阅读:

二、完全二叉树判定

1>如果树为空,则直接返回错

2>如果树不为空:层序遍历二叉树

2.1>如果一个结点左右孩子都不为空,则pop该节点,将其左右孩子入队列;

2.1>如果遇到一个结点,左孩子为空,右孩子不为空,则该树一定不是完全二叉树;

2.2>如果遇到一个结点,左孩子不为空,右孩子为空;或者左右孩子都为空,且则该节点之后的队列中的结点都为叶子节点,该树才是完全二叉树,否则就不是完全二叉树。

相关文章