是否有任何有效的算法来遍历基于堆的优先级队列?

Is there any efficient algorithm for traversing a Heap-Based Priority Queue?

我已经在 Java 中实现了 Heap-Based Priority Queue 但我现在的挑战是实现一个高效的 Iterator 具有确定的(递增或递减)遍历顺序。是否有任何算法可以在恒定辅助下执行此操作 space和O(n)的时间复杂度? O(nlogn) 非常简单。此外,O(n) space 算法绝对没有任何微妙之处。如果可以请帮忙。

没有,没有算法可以O(n)的时间复杂度按顺序迭代堆。

基于最优比较的排序算法有 worst case time complexity of O(nlogn)。如果你可以按升序迭代一个堆(基于比较),时间复杂度为 O(n),你就会有一个基于比较的排序算法,时间复杂度为 O(n),这是不可能的。