一尘不染

从最大堆中获取最小元素的时间复杂度

algorithm

在一次采访中有人问我:

从最大堆中获取最小元素的最佳时间复杂度是多少?

假定堆大小已知并且使用数组将堆实现为二进制堆,我将其答复为O(1)。按照我的假设,最小值为heap_array[heap_size]

我的问题是这个答案是否正确。如果没有,正确答案是什么?


阅读 671

收藏
2020-07-28

共1个答案

一尘不染

我的问题是这个答案是否正确。

不,那是不正确的。您唯一的保证是, 每个节点都包含其下面子树的最大元素 。换句话说, 最小元素可以是 树中的 任何叶子

如果不是,正确的答案是什么?

正确答案是O(n)。在每个步骤中,您都需要遍历左右两个子树,以搜索最小元素。实际上,这意味着您需要遍历所有元素以找到最小值。

2020-07-28