二进制堆&最小化的优先级队列

时间:2017-04-11 17:37:10

标签: queue heap binary-tree priority-queue

有人可以告诉我哪些是二进制堆(最大值)以及哪些是最小化的优先级队列,为什么/为什么不是这样?我会将它们发布到数组中,因为我不知道如何在这里发布图片,x表示该位置是空白的。

我们走了:[8,6,7,4,6​​,6,x],[4,5,4,7,8,4,6],[,4,4,5,7,x中,x,6]

我认为第一个是二进制堆,另外两个是最小化的优先级队列,但根据解决方案我错了。解决方案可能是错误的,所以如果您知道哪个是哪个,请向我解释。

提前致谢。

1 个答案:

答案 0 :(得分:0)

嗯,第一个可能是二进制最大堆。也就是说,树看起来像这样:

          8
      6       7
    4   6   6

第二个是二进制最小堆:

          4
      5       4
    7   8   4   6

第三个不能是二进制堆,因为它不符合形状属性。也就是说,它将对应于:

         4
     4       5
   7   x   x   6

在二进制堆中,底行是左填充的。这棵树没有留下来。

所以第一个是二进制最大堆。第二个是二进制最小堆,也可以看作面向最小值的优先级队列。我不知道该怎么称呼第三个。它不是有效的最小堆,并且它不是最小优先级队列的顺序表示,因为7在6之前。

至少,根据我对二进制堆和优先级队列的理解,这是我的答案。