我对下面的树的术语感到困惑,我一直在研究树,无法区分这些树:
a)完整的二叉树
b)严格的二叉树
c)全二叉树
请帮助我区分这些树。这些树何时何地在数据结构中使用?
我对下面的树的术语感到困惑,我一直在研究树,无法区分这些树:
a)完整的二叉树
b)严格的二叉树
c)全二叉树
请帮助我区分这些树。这些树何时何地在数据结构中使用?
Answers:
完整的二叉树(有时是适当的二叉树或二叉树或严格的二叉树)是一棵树,其中除叶子以外的每个节点都有两个孩子。
因此,您没有只有1个孩子的节点。似乎与严格的二叉树相同。
这是来自Google的完整/严格二叉树的图像:
完整的二叉树是一个二叉树,其中除最后一个级别外,每个级别都已完全填充,并且所有节点都尽可能地靠左。
它似乎意味着一棵平衡的树。
这是来自Google的完整二叉树的图像,图像的完整树部分是奖励。
严格和完整二进制树之间是有区别的。
1)完整的二叉树:高度为h的,恰好包含(2 ^ h)-1个元素的二叉树称为完整的二叉树。(参考:Pg 427,C ++中的数据结构,算法和应用[大学出版社],Sartaj Sahni的第二版)。
或者换句话说
在完整的二进制树中,每个节点恰好具有0或2个子节点,并且所有叶节点都处于同一级别。
例如:以下是完整的二进制树:
18
/ \
15 30
/ \ / \
40 50 100 40
2)严格的二叉树:每个节点正好有0或2个孩子。
例如:以下是一个严格的二进制树:
18
/ \
15 30
/ \
40 50
我认为“完整二叉树”的定义没有任何混淆,但出于帖子的完整性,我想告诉您“完整二叉树”是什么。
3)完全二叉树:二叉树是完全二叉树,如果各级都完全填满,除了可能最后一级和最后一级具有左尽可能所有钥匙。
例如:以下是一个完整的二进制树:
18
/ \
15 30
/ \ / \
40 50 100 40
/ \ /
8 7 9
注意:以下也是完整的二叉树:
18
/ \
15 30
/ \ / \
40 50 100 40
免责声明-某些定义的主要来源是维基百科,欢迎提出任何改进我的答案的建议。
尽管这篇文章的答案是可以接受的,而且是一个很好的答案,但我仍然感到困惑,我想对这些术语之间的区别进行更多的说明。
(1)完整二叉树-完整二叉树是一棵二叉树,其中除叶子以外的每个节点都有两个孩子,这也称为严格二叉树。
上面两个是完整或严格二叉树的示例。
(2)完整的二叉树-现在,完整的二叉树的定义是很模糊的,它指出:-完整的二叉树是一个二叉树,其中除最后一个外,每个级别都被完全填充,并且所有节点都是尽可能左。在最后一级h,它可以具有1到2h个节点,并尽可能远
注意斜体行。
歧义在于斜体字中的行,“除了最后一个可能”,这意味着最后一个级别也可以完全填充,即不必总是满足此例外。如果异常不成立,则与我发布的第二张图片完全一样,也可以称为完善的二叉树。因此,一个完美的二叉树也很完整,但反之则不然,这需要我再声明一个定义:
几乎完整的二进制树-当完整二进制树的定义中的异常成立时,则将其称为几乎完整的二进制树或几乎完整的二进制树。它本身只是一种完整的二叉树,但是必须有一个单独的定义才能使其更加明确。
因此,几乎完整的二叉树看起来像这样,您可以在图像中看到节点尽可能地靠近左侧,因此它更像是完整二叉树的子集,更严格地说,每个几乎完整的二叉树都是完整的二叉树树,反之亦然。:
完整的二叉树是完整的二叉树,但不可能反向,如果二叉树的深度为n,则为否。完整二叉树中的节点数为(2 ^ n-1)。在二叉树中没有必要有两个孩子,但在完整的二叉树中,每个节点都没有两个孩子。
从基础开始,了解二进制树本身以了解其不同类型非常重要。
一棵树是二叉树,当且仅当:-
–它具有一个根节点,该根节点可能没有任何子节点(0个子节点,NULL树)
–根节点可能具有1或2个子节点。每个这样的节点本身形成二叉树
–子节点数可以为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个声誉,所以无法发布图片。希望这对您和其他人有帮助!
以我对二叉树的有限经验,我认为:
让我们考虑一个高度为“ h”的二叉树。如果所有叶子都以高度“ h”或“ h-1”出现而序列中没有任何遗漏数字,则该二叉树称为完整二叉树。
1
/ \
2 3
/ \
4 5
它是完整的二叉树。
1
/ \
2 3
/ /
4 6
它不是完整的二叉树,因为序列中缺少5号节点
如果每个节点都有0或2个子节点,则full二叉树将满。叶节点的完整二进制数是内部节点数加1 L = l + 1