【发布时间】:2021-10-22 22:20:59
【问题描述】:
问题:假设所有元素都是不同的,那么最小的元素可能驻留在最大堆中的什么位置?
我知道在最大堆中,最大的节点是根节点,最小的节点是叶子节点之一。我找到了答案,它说它在任何叶子中,即索引为⌊n/2⌋+k的元素,其中k>=1 ,即在堆数组的后半部分。
问题:你能解释一下为什么我找到的答案不只是说它是一片叶子吗?你能解释一下为什么回答⌊n/2⌋+k吗?其次,为什么在下半部分,当它在树的最后一层时,考虑到所有父母都大于他们的孩子,所以高度为 1 的孩子比父母小,但比它的孩子大,依此类推。
已编辑:你能解释一下为什么叶子的索引是⌊n/2⌋+1, ⌊n/2⌋+2, ..., ⌊n/2⌋+n吗?或者为什么最后一个非叶节点的索引在基于数组的堆的⌊n/2⌋?我们知道堆的总顶点数由Ceil(n/2^(h+1)) 给出。叶子编号是Ceil(n/2),所以希望额外的细节有助于解决问题。
【问题讨论】:
-
您使用的是从零开始还是从一开始的索引?