我遇到了两种资源,他们似乎用两种方式说出基本定义。
Source 1(和我的一位教授)说:
所有叶子都处于同一级别,所有非叶子节点都有两个子节点。
Source 2(以及95%的互联网)说:
完整的二叉树(有时称为正确或平面二叉树)是一棵树,其中树中的每个节点都有0或2个子节点。
变为二叉树,但不是Source 1
,因为叶子不在同一级别。
所以通常他们会认为像
这样的树为Full Binary Tree
。
我可能听起来很愚蠢,但我很困惑相信什么。任何帮助表示赞赏。提前谢谢。
答案 0 :(得分:4)
主要有三个概念:(1)完整二叉树(2)完整二叉树和(3)完美二叉树。正如您所说,完整二叉树是一个树,其中所有节点都具有2级或0级。但是,完整二叉树是除了可能的所有级别之外的所有级别最后一级已经填满。此外,完美二叉树是完整的二叉树,因此所有级别都处于相同的深度。 For more see the wikipedia page
我对术语完整的直觉是,给定一定数量的节点,通过填充每个级别完全来制作完整的二叉树,除了可能是最后一个,因为节点的数量可能不是2 ^ n - 1的形式。
答案 1 :(得分:3)
我认为问题在于,定义的目的是什么?通常,以维基百科中出现的方式定义完整二叉树的原因是能够引入并证明Full Binary Tree Theorem:
I 内部节点的完整二叉树中 N 的节点总数为2 I + 1。
(根据内部节点数,叶节点数和节点总数,这个定理有几个等价的公式。)这个定理的证明并不要求所有叶节点都是相同的水平。
你的教授所描述的是我称之为完美二叉树的东西,或者等同于完整,完整的二叉树。