【发布时间】:2014-05-07 08:48:28
【问题描述】:
我现在正在学习堆,显然更多的注意力放在堆的最小元素上,但是我只是想知道如何找到最大元素?对于 min 元素,您只需要返回根,不确定如何处理 max ?
【问题讨论】:
-
你知道最小堆和最大堆吗?
-
假设您不想单独存储它,您可以使用depth first search 来查找最小堆中的最大元素。
-
最小堆让你在 O(1) 中找到最小值(因为它位于根节点)。在二叉堆中,最大值可能在任何叶子中,你有 O(n),所以你找不到比这更快的(除非你有一些额外的结构)。例如,您可以只拥有一个 max-binary-heap,您可以在其中找到 O(1) 中的最大值,但找不到最小值。您还可以查看 min-max heaps 的结构示例,该示例可让您在 O(1) 中找到最小值和最大值