我有一个问题,它是这样的:
有一个Max堆二叉树。
让我们假设在堆中最底层有(2 ^ 2017)-2017个节点。
A)堆中有多少级别?
B)堆中叶子的数量是多少?
由于
答案 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/2
。 2017/2
是上面级别的叶节点数。