完全和几乎完整的二叉树之间的差异

时间:2014-10-12 16:07:23

标签: data-structures tree

完整的树是一个树,其中每个级别都已完全填充,几乎完整的树是一棵树,如果最后一级未完全填充,则所有节点尽可能地离开。我的困惑在于下面的二叉树示例:

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

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

6 个答案:

答案 0 :(得分:4)

您的示例是一个完整的二叉树:完整的二叉树可以具有不完整的最后一级,只要其中的所有叶子都被推到左侧。

完美二叉树是一个完整的二叉树,其中最后一个级别已满。

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

术语令人困惑,但几乎完整的二叉树也已完成。

答案 1 :(得分:3)

不确定某些术语的来源......我所学习的二叉树技术术语是严格二进制完整,以及几乎完成

严格二进制树是二叉树,其中每个节点有两个子节点或者是一个叶子(没有子节点)。

完整的二叉树是严格意义上的二叉树,其中每个叶子都在同一个"最大值"水平。

几乎完整的二进制树不一定是严格二进制的(虽然它们可以是),并且完成。如果树具有最大级别d,则包含从根到级别d-1的所有节点的子树是完整树。另外,如果一个节点在d级有一个右后代,那么它的左子树是一个完整的树,其叶子都在d级(树的所有"底部"节点都是"到目前为止尽可能地离开")。

从我所教过的内容来看,接受的答案是不正确的,即#34;几乎完整的二叉树也是完整的。"他们不是。一个几乎完整的二叉树将完成如果你删除了树的最低级别的每一片叶子。

答案 2 :(得分:2)

实际上,由于阅读不同的书籍而引起混淆。完整二叉树的解释(即除了最后一个之外的每个级别,完全填充并且所有节点尽可能地离开)在一些书中被称为几乎完整的二叉树,并且FBT的解释用作CBT的解释和解释严格BT作为FBT。他们没有严格的二叉树的解释,或者他们可能没有FBT的解释。

答案 3 :(得分:1)

你让事情变得混乱。你从哪里得到这些定义?

定义:

  

二叉树T 完整如果   每个节点都是叶子或   正好拥有两个孩子   节点

  如果所有级别除外,

具有n级别的二叉树T 完成   可能是最后一个完全满了,最后一个级别全部   它的节点在左侧。

您对“完整树”的解释似乎被称为“完整& 完整树”

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

答案 4 :(得分:0)

ACBT是一棵树,其中具有正确孩子的每个节点也有一个左孩子。拥有一个左孩子不一定要求一个节点有一个合适的孩子。

答案 5 :(得分:0)

我喜欢以下定义。

完全二叉树:

<块引用>

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

几乎完整的二叉树:

<块引用>

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

所以几乎完全二叉树也是完全二叉树。与完整 BT 的不同之处在于,几乎完整 BT 的最后一层并非总是完全填满。

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