【问题标题】:Complete binary tree definitions完整的二叉树定义
【发布时间】:2012-08-11 14:17:18
【问题描述】:

我有一些关于二叉树的问题:

  • Wikipedia 指出,二叉树是complete,当“完全二叉树是一种二叉树,其中除了可能的最后一层,每一层都被完全填满,并且所有节点都为尽可能远。”最后一段“尽可能向左”是什么意思?

  • 如果 (1) 它是空的,或者 (2) 它的左右子树高度平衡并且左侧树的高度为在右树高度的 1 以内,取自 How to determine if binary tree is balanced?,这是正确的还是 1 值上有“抖动”?我阅读了我链接的答案,左右树的高度之间也可能存在 4 的差异因子

  • 完整且高度平衡的定义是否仅适用于二叉树或任何其他树?

【问题讨论】:

    标签: algorithm tree binary-tree


    【解决方案1】:
    • 按照维基百科中定义的参考,我得到了 this page。该定义取自那里,但经过修改:

      定义:一棵二叉树,其中每一层,除了可能最深的,都被完全填满。在深度 n 处,高度 树,所有节点都必须尽量靠左。

      它继续下面的注释,

      一棵完整的二叉树在每个深度 k

      有时,定义会因方便而异(对某事有用)。据我了解,该段落可能是一种变体,它要求叶节点首先填充最深层次的左侧(即从左到右填充)。我通常找到的定义与上面描述的完全一样,但没有那个 路过。

    • 通常对高度平衡树的定义是你 描述。换句话说:

      当且仅当每个节点的两个子树的高度最多相差 1 时,树才是平衡的。

      该定义取自here。同样,有时定义会更加灵活以服务于特定目的。例如,AVL tree 的定义表明

      在 AVL 树中,任意节点的两个子子树的高度 最多相差一个

      不过,我记得有一次我必须重写一个算法,以便树 如果任何一个的两个子子树都被认为是高度平衡的 node 最多相差 2。请注意,您给出的定义是递归的,这对于二叉树很常见。

    • 在子级数量可变的树中,您不能说它是完整的(任何父级都可以拥有您想要的子级数量)。不过,它可以应用于 n 叉树(具有固定数量的 n 子树)。

    【讨论】:

      【解决方案2】:

      完整且高度平衡的定义是否仅适用于二进制 树还是任何其他树?

      简短回答:是的,它可以扩展到任何 n 叉树。

      【讨论】:

      • 同意。具有固定数量的孩子的 n 叉树是可能的。
      猜你喜欢
      • 2019-07-02
      • 2015-08-17
      • 2021-05-14
      • 2020-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-30
      • 2019-07-25
      相关资源
      最近更新 更多