给定堆中有多少叶子及其级别

时间:2017-05-15 10:42:37

标签: data-structures binary-heap

我有一个问题,它是这样的:

有一个Max堆二叉树。

让我们假设在堆中最底层有(2 ^ 2017)-2017个节点。

A)堆中有多少级别?

B)堆中叶子的数量是多少?

由于

1 个答案:

答案 0 :(得分:0)

在最底层有2个 x 节点的完整二进制堆有2个(x + 1)级别。考虑一下这个堆:

    1
 2     3
4 5   6 7

底层有4个(2 (3-1))节点,3个层次。

如果底层已满,那么叶节点的数量与底层的节点数相同。

在您的情况下,底层有(2 2017 ) - 2017叶子节点。我们知道此级别上可能的最大节点数是2 2017 (因为最大值总是为2的幂)。从上面的例子中我们也知道,树中有2018个级别。

然而,叶节点的数量不是(2 2017 ) - 2017。考虑一下这个堆:

         1
     2       3
   4   5   6   7
  8 9

底层有两个叶子节点,底层上面有三个叶子节点(5,6和7)。

我想你会发现在你的情况下,叶子节点的数量是(2<sup>2017</sup>)-2017 + 2017/22017/2是上面级别的叶节点数。