我目前正在做一个最大堆。当我使用remove()方法时,我明白我会与更大的孩子交换。如果两个孩子都有同样的优先权怎么办?例如
案例1:
heap = [5,7,7,16,15]
如果我删除5并将其替换为15,我会向右下方(这是错误的),所以我会向下流到左侧。
但使用相同的逻辑,如果我有
heap = [5,7,7,16,15,18]
我向左涓流,它将不再是一个有效的堆。
我该怎么做才能确保我有一个有效的堆?
答案 0 :(得分:1)
没关系。
在第一种情况下向右倾斜很好:
[15,7,7,16] - > [7,7,15,16]
在第一种情况下向左倾斜很好:
[15,7,7,16] - > [7,15,7,16]
在第二种情况下向右倾斜很好:
[18,7,7,16,15] - > [7,7,18,16,15]
在第二种情况下向左倾斜很好:
[18,7,7,16,15] - > [7,18,7,16,15] - > [7,15,7,16,18]