暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

二叉树的高级属性及类型

Alleria Windrunner 2019-12-03
559
上篇咱们介绍了树的基础概念和与数组、链表的区别以及最简实现。本篇继而深入介绍二叉树的高级属性及常见类型。


二叉树每层的最大结点数

此处层级是从根路径到节点(包括根和节点)的路径上的节点数。根级别为 0。通过上面的图我们可以看到,对于root结点来说,level = 0,结点的数目为2^0 = 1。因此,我们假设level = l上的最大结点数为2^l,而对于二叉树来说每个结点最多拥有2个子结点,则下一个level可以推导出最多可以拥有2倍的结点数,即2 * 2^l。


二叉树最大结点数与高度的关系

这里数的高度是指根到叶子结点路径上的最大结点数。只有单个结点的数的高度为0。如果所有level上都存在最大结点数,则整棵树具有最大结点数。因此树高度为h的二叉树中的最大结点数为1 + 2 + 4 + ... + 2^h,我们可以推导出高度为h的树的总结点数为2^(h+1)-1。


满二叉树

满二叉树是指所有的结点拥有0个或者2个子结点的二叉树。或者说满二叉树中除了叶子结点没有子结点外其它结点都拥有2个子结点。例如:

                  18
    / \
    15 30
    / \ \
    40 50 100 40


    18
    / \
    15 20
    / \
    40 50
    / \
    30 50


    18
    / \
    40 30
    / \
    100 40


    完整二叉树

    完整二叉树是指树的所有层都填满的结点,除了最后一层可以不填满,但是也必须是所有的左结点都已填满。例如:

                  18
      / \
      15 30
      / \ \
      40 50 100 40




      18
      / \
      15 30
      / \ \
      40 50 100 40
      / \
      8 7 9

      完整二叉树一个典型的例子就是二叉堆。


      完美二叉树

      完美二叉树是指树的所有内部结点都有2个子结点,并且所有的叶子结点都在同一层。例如:

                     18
        / \
        15 30
        / \ \
        40 50 100 40




        18
        / \
        15 30


        根据上面的计算公式,高度为h的完美二叉树拥有2^(h+1)-1个结点。


        二叉查找树

        二叉查找树,也称二叉搜索树、有序二叉树、排序二叉树,是指一棵空树或者具有以下特性的二叉树:

        1. 左子树上所有节点的值均小于它的根节点的值;
        2. 右子树上所有节点的值均大于它的根节点的值;
        3. 以此类推:左、右子树也分别为二叉查找树。

                例如:
            
                        118
          / \
          40 130
          / \ / \
          24 50 122 154
          / \ /
          8 32 41


          退化树

          退化树是指树的每个内部结点只有1个子结点。你可以把退化树看作是链表,其各种操作的时间复杂度和链表一致,但是空间复杂度要略高,因为要多维护一个节点指针。例如:

                 10
            /
            20
            \
            30
            \
            40


            文章转载自Alleria Windrunner,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

            评论