【问题标题】:difference between complete and almost complete binary tree完全和几乎完全二叉树的区别
【发布时间】:2021-03-06 01:33:50
【问题描述】:

一棵完整的树是一棵树,其中每一层都被完全填满,几乎完全的树是一棵树,如果最后一层没有完全填满,那么所有节点尽可能地离开。我的困惑在于以下二叉树示例:

            O
          /   \
         O      O
       /  \    / \
      O    O  O   O
     / \
    O   O

根据定义,它应该是不完整的二叉树,但它是完整的 二叉树。如果有人可以详细说明这棵完整的二叉树如何,为什么不是不完整的二叉树?

【问题讨论】:

    标签: data-structures tree


    【解决方案1】:

    你的例子是一棵完全二叉树:一棵完全二叉树可以有一个不完整的最后一层,只要它里面的所有叶子都被推到左边。

    完美二叉树是最后一层已满的完全二叉树。

    几乎完全二叉树是完全但不完美的二叉树。所以你的例子也差不多完成了。

    术语混乱,但几乎完整的二叉树也是完整的。

    【讨论】:

    • 那么什么是几乎完全的二叉树?
    • 完全二叉树和几乎完全二叉树到底有什么区别?
    • @Bramsh 如果它快完成了,那么最后一个级别还没有完成
    • 不是和完整的树一样吗?因为在完整的树中,最后一层也不像我的例子那样完整。
    • @Bramsh 如果它已完成,那么最后一个级别可能会或可能不会已满。如果它快完成了,那么最后一个级别未满。您的示例符合这两个定义。令人困惑的是,几乎完整的二叉树是完整的
    【解决方案2】:

    不确定其中一些术语是从哪里来的……我学到的二叉树的技术术语是strictly binarycomplete几乎完成

    严格二叉树是二叉树,其中每个节点要么有两个孩子,要么是叶子(没有孩子)。

    完全二叉树是严格的二叉树,其中每个叶子都处于相同的“最大”级别。

    几乎完全二叉树不一定是严格的二叉树(尽管它们可以是),并且是完全的。如果树的最大级别为 d,则包含从根到级别 d-1 的所有节点的子树是完整树。此外,如果一个节点在 d 层有一个右后代,那么它的左子树就是一棵完整的树,其叶子都在 d 层(树的所有“底部”节点都“尽可能地向左”)。

    据我所知,接受的答案是不正确的说法是“几乎完整的二叉树也是完整的”。他们不是。一棵几乎完整的二叉树将是完整的如果您删除了树的最低级别的每一片叶子。

    【讨论】:

    • 几乎完全的树也是完全的二叉树
    【解决方案3】:

    实际上,混淆是由于阅读不同的书籍而引起的。完全二叉树的解释(即除了可能的最后一层之外的每一层都被完全填满,所有节点都尽可能地靠左)在一些书籍中被称为几乎完全二叉树,而对 FBT 的解释则作为对 CBT 的解释和对严格BT作为FBT。他们对严格的二叉树没有任何解释,或者如果可能的话,他们对 FBT 没有任何解释。

    【讨论】:

      【解决方案4】:

      你把事情弄糊涂了。你从哪里得到这些定义的?

      定义:

      如果二叉树 T 每个节点要么是叶子,要么 正好拥有两个孩子 节点。

      如果所有级别除了 可能最后一个完全满了,最后一个级别已经全部 它的节点在左侧。

      您对“完整树”的解释似乎是所谓的“完整 & 完整树”

      来源:http://courses.cs.vt.edu/~cs3114/Fall09/wmcquain/Notes/T03a.BinaryTreeTheorems.pdf

      【讨论】:

      • 考虑到我的定义,一个几乎完整的树实际上是完整的树?
      • 是的。 “几乎完整的树”是“完全树”的一个特例。
      【解决方案5】:

      ACBT 是一棵树,其中每个节点都有一个右孩子也有一个左孩子。有一个左孩子并不一定要求一个节点有一个右孩子。

      【讨论】:

        【解决方案6】:

        我喜欢以下定义。

        完全二叉树:

        在完全二叉树中,树的所有层都被填充 完全除了最后一层。在最后一级,节点可能或 可能没有完全填满。另外,让我们注意所有节点都应该 从左边填充。

        几乎完全二叉树:

        几乎完全二叉树是一种特殊的二叉树,其中 插入逐级进行,从左到右顺序在 每个级别和最后一个级别总是没有完全填满

        所以几乎完全二叉树也是完全二叉树。与完整BT的区别在于,几乎完整的BT最后一个级别并不总是完全填满。

        来源:https://www.baeldung.com/cs/complete-vs-almost-complete-binary-tree

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-01-23
          • 1970-01-01
          • 2019-07-02
          • 2020-05-15
          • 1970-01-01
          • 2015-08-17
          相关资源
          最近更新 更多