我有一个问题,我相信我理解,但我正在寻找一些验证。我知道,为了成为最小堆,子进程必须大于父进程,并且为了成为最大堆,父进程必须大于子进程。如果是这样,这是对以下问题的有效答案:
创建一个包含5个元素的数组,即最大堆,但其反向不是最小堆。
A = [100,50,49,40,41]
100
| |
50 49
| |
40 41
所以,只是验证一下,如果我把这棵树看作一个最小堆,我会读40,41,50,49,100?谢谢 - 这让我很困惑,对Heaps的任何见解都会很棒!
答案 0 :(得分:2)
简单的反例:
考虑A = [10 7 3 6 5]
- 数组是有效的最大堆。
10
| |
7 3
| |
6 5
但反向B = [5 6 3 7 10]
不是min-heap
因此,并非所有max-heap数组的反转都是均值堆