一个数组是最大堆,但反向不是最小堆?

时间:2018-03-15 02:01:41

标签: arrays data-structures heapsort

我有一个问题,我相信我理解,但我正在寻找一些验证。我知道,为了成为最小堆,子进程必须大于父进程,并且为了成为最大堆,父进程必须大于子进程。如果是这样,这是对以下问题的有效答案:

创建一个包含5个元素的数组,即最大堆,但其反向不是最小堆。

A = [100,50,49,40,41]

    100
  |     |
  50     49
 |  |
40  41 

所以,只是验证一下,如果我把这棵树看作一个最小堆,我会读40,41,50,49,100?谢谢 - 这让我很困惑,对Heaps的任何见解都会很棒!

1 个答案:

答案 0 :(得分:2)

简单的反例:
考虑A = [10 7 3 6 5] - 数组是有效的最大堆。

     10
   |     |
  7      3
 |  |
 6  5 

但反向B = [5 6 3 7 10]不是min-heap

因此,并非所有max-heap数组的反转都是均值堆