我对下面的树的术语感到困惑,我一直在研究树,我无法区分这些树:
a)完整的二叉树
b)严格的二叉树
c)完整二叉树
请帮我区分这些树。 在数据结构中何时何地使用这些树?
答案 0 :(得分:79)
完美树:
x
/ \
/ \
x x
/ \ / \
x x x x
/ \ / \ / \ / \
x x x x x x x x
完整的树:
x
/ \
/ \
x x
/ \ / \
x x x x
/ \ /
x x x
严格/完整树:
x
/ \
/ \
x x
/ \
x x
/ \
x x
答案 1 :(得分:64)
完整的二叉树(有时是适当的二叉树或2树或严格的二叉树)是一棵树,其中叶子以外的每个节点都有两个子节点。
所以你没有只有一个孩子的节点。看起来与严格的二叉树相同。
以下是来自Google的完整/严格二叉树的图片:
完整的二叉树是一个二叉树,其中除了可能是最后一个级别之外,每个级别都被完全填充,并且所有节点都尽可能地离开。
这似乎意味着一棵平衡的树。
这是一个完整的二叉树的图像,来自谷歌,图像的完整树部分是奖金。
答案 2 :(得分:47)
STRICT和FULL BINARY TREE之间存在差异。
1)FULL BINARY TREE:高度为h且包含精确(2 ^ h)-1个元素的二叉树称为完整二叉树。 (参考:Pg 427, C ++中的数据结构,算法和应用 [大学出版社],Sartaj Sahni的第二版)。
或换句话说
在一个完整的BINARY TREE中,每个节点都有正好0或2个子节点,并且所有叶子节点都处于同一级别。
例如:以下是完整的BINARY TREE:
18
/ \
15 30
/ \ / \
40 50 100 40
2)STRICT BINARY TREE:每个节点都有0或2个孩子。
例如:以下是STRICT BINARY TREE:
18
/ \
15 30
/ \
40 50
我认为在完整二进制树的定义中没有混淆,仍然是为了完整的帖子我想告诉完整的二叉树是什么。
3)完整的二进制树如果所有级别都被完全填充,则二叉树是完整的二进制树,除了可能的最后一级,最后一级的所有键都尽可能保留。
例如:以下是完整的BINARY TREE:
18
/ \
15 30
/ \ / \
40 50 100 40
/ \ /
8 7 9
注意:以下也是完整的二进制树:
18
/ \
15 30
/ \ / \
40 50 100 40
答案 3 :(得分:10)
免责声明 - 一些定义的主要来源是维基百科,欢迎任何改善我的答案的建议。
虽然这篇文章有一个公认的答案并且是一个很好的答案,但我仍然感到困惑,并希望对这些术语之间的区别进行更多澄清。
(1)完整的二进制树 - 完整的二叉树是一个二叉树,其中除了叶子之外的每个节点都有两个子节点。这也称为 严格二叉树 强>
以上两个是完整或严格二叉树的例子。
(2)完成二叉树 - 现在,完整二叉树的定义非常模糊,它指出: - 完整的二叉树是一个二叉树,其中每个级别,除外可能是最后一个,已完全填满,所有节点都尽可能远。 它可以在最后一级h
之间尽可能地保留1到2h节点注意斜体的线条。
模糊性在于斜体线,"除了最后一个"这意味着最后一级也可以完全填满,即不必总是满足这种例外。如果异常不成立,则它与我发布的第二个图像完全相同,也可以称为完美二叉树。因此,一个完美的二叉树也是完整而完整的,但反之亦然,我需要说明的另一个定义是明确的:
ALMOST COMPLETE BINARY TREE - 当完整二叉树的定义中的异常成立时,它被称为几乎完整的二叉树或几乎完整的二叉树。它只是一种完整的二叉树本身,但需要单独的定义才能使其更加明确。
所以一个几乎完整的二叉树看起来像这样,你可以在图像中看到节点尽可能地离开,所以它更像是完整二叉树的一个子集,更严格地说每个几乎完整的二叉树是一个完整的二叉树,但反之亦然。 :
答案 4 :(得分:6)
从上面的答案得出结论,这是完整/严格,完整和完美的二叉树之间的确切区别
完整/严格二叉树: - 除叶节点外的每个节点都有两个子节点
完整的二叉树: - 除最后一级以外的所有级别都已完全填充,并且所有节点都是左对齐的。
完美的二叉树: - 除叶子节点外的每个节点都有两个子节点,每个级别(最后一级)也完全填满。
答案 5 :(得分:2)
考虑一个二叉树,其节点以树形方式绘制。现在开始从上到下,从左到右编号节点。完整的树具有以下属性:
如果n有子节点,则编号小于n的所有节点都有两个子节点。
如果n有一个孩子,那么它必须是左孩子,所有小于n的孩子都有两个孩子。此外,编号大于n的节点没有子节点。
如果n没有子节点,则编号大于n的节点没有子节点。
完整的二叉树可用于表示堆。它可以很容易地在没有间隙的连续存储器中表示(即除了最后可能存在的任何空间外,所有数组元素都被使用)。
答案 6 :(得分:2)
完整二叉树是一个完整的二叉树,但是反向是不可能的,如果二进制的深度是n,则为no。完整二叉树中的节点数是(2 ^ n-1)。在二叉树中没有必要它有两个子节点,但在完整的二进制文件中它每个节点都没有或两个子节点。
答案 7 :(得分:2)
从基础开始,了解二叉树本身以了解它的不同类型非常重要。
当且仅当: -
时,树才是二叉树- 它有一个根节点,可能没有任何子节点(0个子节点,空树)
-Root节点可能有1个或2个子节点。每个这样的节点本身就形成了一个abinary树
- 子节点数可以是0,1,2 .......不超过2
- 从根到每个其他节点都有一条唯一的路径
示例:
X
/ \
X X
/ \
X X
来到您的查询术语:
二进制树是一个完整的二叉树(高度为h,我们将根节点设为0)当且仅当: -
0级到h-1表示高度为h-1的完整二叉树
- 级别h-1中的一个或多个节点可能具有0或1个子节点
如果j,k是级别h-1中的节点,则j具有比k更多的子节点,当且仅当j在k的左侧时,即最后一级(h)可能缺少叶节点,但是在场的必须转移到左边
示例:
X
/ \
/ \
/ \
X X
/ \ / \
X X X X
/ \ / \ / \ / \
X X X X X X X X
当且仅当: -
时,二叉树才是严格的二叉树每个节点只有两个子节点或没有节点
示例:
X
/ \
X X
/ \
X X
/ \ / \
X X X X
当且仅当: -
时,二叉树才是完整的二叉树每个非叶子节点都有两个子节点
所有叶节点都处于同一级别
示例:
X
/ \
/ \
/ \
X X
/ \ / \
X X X X
/ \ / \ / \ / \
X X X X X X X X
/ \ / \ / \ / \ / \ / \ / \ / \
X X X X X X X X X X X X X X X X
您还应该知道完美的二叉树是什么?
当且仅当: -
时,二叉树才是完美的二叉树- 是一个完整的二叉树
- 所有叶节点都处于同一级别
示例:
X
/ \
/ \
/ \
X X
/ \ / \
X X X X
/ \ / \ / \ / \
X X X X X X X X
/ \ / \ / \ / \ / \ / \ / \ / \
X X X X X X X X X X X X X X X X
嗯,很抱歉,我无法发布图片,因为我没有10个声望。 希望这能帮助你和其他人!
答案 8 :(得分:2)
在我对二叉树的有限经验中,我认为:
答案 9 :(得分:1)
让我们考虑一个高度为'h'的二叉树。如果所有叶子都以高度“ h”或“ h-1”出现,而序列中没有任何缺失数字,则该二叉树称为完整二叉树。
1
/ \
2 3
/ \
4 5
这是一个完整的二叉树。
1
/ \
2 3
/ /
4 6
这不是完整的二叉树,因为序列中缺少5号节点
答案 10 :(得分:0)
full二进制树将已满。 叶节点的完整二进制数是内部节点数加1 L = l + 1
答案 11 :(得分:0)
完整的二叉树: 除最低级别和所有叶子元素必须保留的一项主要内容外,所有级别均已完全填充。 严格的二叉树: 在这棵树中,每个非叶节点都没有子节点,即既没有左侧节点也没有右侧节点。 完整的二叉树: 每个节点都有零个孩子或两个孩子(从来没有一个孩子)。