在堆最大项必须出现在位置1,第二大的必须在位置2或位置3.给在大小31,在第k个最大(ⅰ)可以出现的堆位置的列表中,以及(ii)不能出现,对于k = 2,3,4(假设值是不同)。
我试图研究这个对我的期中考试,但它的凌晨三点钟,我被困在这个问题上的书,因为它不提供解决方案。 任何帮助,将不胜感激。
在堆最大项必须出现在位置1,第二大的必须在位置2或位置3.给在大小31,在第k个最大(ⅰ)可以出现的堆位置的列表中,以及(ii)不能出现,对于k = 2,3,4(假设值是不同)。
我试图研究这个对我的期中考试,但它的凌晨三点钟,我被困在这个问题上的书,因为它不提供解决方案。 任何帮助,将不胜感激。
如果看一下堆实现在维基百科例如,你会看到,第三大可在2或3位,取一个第二大不大,以及位置4 + 5或6 + 7,这取决于其中第二大是。 因此,它可以在2-7。
第四大然后必须在任何位置的第三大就可以了,再加上这是第三大的直接孩子的任何位置。 这意味着它可以从2-15的任何地方。
下面的图片是基于0,因为它是一个数组实现,所以添加一个用于位置。