关于shiftdown方法的疑问
来源:4-4 Shift Down
慕粉4283821
2020-12-29
老师,请问为什么 需要判断
data[k] > data[j] ? break
然后break 呢。 如果是最大堆 ,应该不会出现这种情况把。我理解 是 下面层级节点的值, 肯定不会大于 父节点的左右节点值的最大值
写回答
1回答
-
8
8 / \ 7 4 / \ / 1 2 3
这是一个最大堆。我们 extractMax 以后,3 直接放到堆顶
3 / \ 7 4 / \ 1 2
开始对 3 shiftDown,首先 7 比 4 大,所以 3 和 7 交换:
7 / \ 3 4 / \ 1 2
然后 3 已经比 1 和2 都大了,不需要交换,直接 break,维护了是一个最大堆。
继续加油!:)
012020-12-29
相似问题