堆中最大的项必须出现在位置1中,而第二个项必须出现在第1位 在位置2或位置3处。给出一个大小为31的堆中的位置列表 kth最大(i)可以出现,并且(ii)不能出现,对于k = 2,3,4(假设值为 不同的。)
我正在尝试研究这个中期但是凌晨3点,我在书中坚持这个问题,因为它没有提供解决方案。任何帮助将不胜感激。
答案 0 :(得分:4)
如果您查看维基百科上的Heap Implementation示例,您会看到第三大可以位于第2或第3位,无论哪一位不是第二位,以及位置4 + 5或6+ 7,取决于第二大的位置。因此,它可以在2-7。
第四大必须处于第三大位置的任何位置,加上任何第三大直接子位置。这意味着它可以是2-15。
以下图片是基于0的,因为它是一个数组实现,所以为该位置添加一个。