Max-Heap 中删除的最佳情况时间复杂度

Best case time complexity of deletion in Max-Heap

有人告诉我,从最大堆中删除一个元素的最佳时间复杂度是 O(1)。

据我了解,最好的情况应该是 O(logn),因为在删除根并将堆中的最后一个元素放在根之后,我们总是必须向下遍历。

那么问题是 - 最好的情况怎么可能是 O(1)

提前致谢

我假设您在谈论 binary heap,这是一个显示最佳案例行为的简单案例。

假设所有相同元素的二进制堆。

二叉堆的删除是先和最后一个child换头,把这个child去掉,然后再做调整保证还是堆

但在我们的例子中,在用最后一个元素切换头部后我们仍然有 root.value >= root.left.value && root.value >= root.right.value,所以我们完成了。

对于这种情况,操作数是恒定的(不管堆的大小),所以我们可以得出这种情况是O(1),因为最好的情况不可能比O(1)好(there is no algorithm that runs better than that, in terms of asymptotic notation),我们可以得出结论,最好的情况是O(1)(紧束缚)。