有人可以告诉我哪些是二进制堆(最大值)以及哪些是最小化的优先级队列,为什么/为什么不是这样?我会将它们发布到数组中,因为我不知道如何在这里发布图片,x表示该位置是空白的。
我们走了:[8,6,7,4,6,6,x],[4,5,4,7,8,4,6],[,4,4,5,7,x中,x,6]
我认为第一个是二进制堆,另外两个是最小化的优先级队列,但根据解决方案我错了。解决方案可能是错误的,所以如果您知道哪个是哪个,请向我解释。
提前致谢。
答案 0 :(得分:0)
嗯,第一个可能是二进制最大堆。也就是说,树看起来像这样:
8
6 7
4 6 6
第二个是二进制最小堆:
4
5 4
7 8 4 6
第三个不能是二进制堆,因为它不符合形状属性。也就是说,它将对应于:
4
4 5
7 x x 6
在二进制堆中,底行是左填充的。这棵树没有留下来。
所以第一个是二进制最大堆。第二个是二进制最小堆,也可以看作面向最小值的优先级队列。我不知道该怎么称呼第三个。它不是有效的最小堆,并且它不是最小优先级队列的顺序表示,因为7在6之前。
至少,根据我对二进制堆和优先级队列的理解,这是我的答案。