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

How many leaves are in a given heap and its level

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

存在最大堆二叉树。

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

A​​)堆中有多少层?

B)堆中的叶子有多少个?

谢谢

在最底层有 2x 个节点的完整二叉堆有 (x+1) 层。考虑这个堆:

    1
 2     3
4 5   6 7

底层有4(22)个节点,共3层。

如果底层已满,则叶子节点数与底层节点数相同。

在您的例子中,底层有 (22017)-2017 个叶节点。我们知道这一层可能的最大节点数是22017(因为最大值总是2的幂)。而且我们还知道,从上面的例子中,树中有 2018 层。

但是叶节点的个数不是(22017)-2017。考虑这个堆:

         1
     2       3
   4   5   6   7
  8 9

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

我想你会发现在你的情况下,叶子节点的数量是(22017)-2017 + 2017/2. 2017/2是上一层的叶节点数