这是一个完整的二叉树吗?

时间:2011-06-28 17:51:23

标签: algorithm data-structures binary-tree

enter image description here

如果这是一个完整的二叉树,为什么以下不是?

enter image description here

2 个答案:

答案 0 :(得分:5)

参见维基百科:

Types of binary trees

  • 完美的二叉树是一个完整的二叉树,其中所有叶子处于相同的深度或相同的水平。 (这也模糊地称为完整的二叉树。)
  • 完整的二叉树是一个二叉树,其中除了可能是最后一个级别之外,每个级别都被完全填充,并且所有节点都尽可能地保留在最左边。

所以涉及到歧义。使用complete = perfect定义,这两个不完整。但是第二个定义是第一个,因为除了底层之外它是完美的,而底层的所有叶子都在树的最左边。

作为旁注,维基百科引用了NIST,NIST page在完美的二叉树下表明了这一点:

This kind of tree is called "complete" by some authors ([CLR90, page 95], Leighton) and "full" by others (Budd page 331, Carrano & Prichard page 429, Ege, [HS83, page 225], and Sahni page 461).

对于那些不认识的人,CLR是CormanLeisersonRivest,他们是Introduction to Algorithms的作者。

然后,第二个定义用于KDE的“计算机编程艺术”(参见Complete Binary Tree at Wolfram Mathworld),这是算法领域中少数几本比CLR更重要的书籍之一。

答案 1 :(得分:0)

供参考,请参阅此http://www.youtube.com/watch?v=tORLeHHtazM

naveen garg博士的数据结构。 它们都不是完整的二叉树。因为完整的二叉树是二级树,在级别i有(2 ^ i)个节点。