如何在不更改的情况下按排序顺序打印堆?

时间:2014-11-20 19:56:31

标签: heap

我想按排序顺序打印堆(从最小到最大),但不要更改堆。 我知道我可以对一个临时数组执行remove_min并打印直到它为空并插回。 还有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

最直接的方法是制作堆的副本,然后从副本中删除remove_min。 (这与HeapSort的后半部分基本相同。)

清空原始堆,然后重新填充它,将更改堆元素的内部顺序。虽然这不会对堆的外部行为造成任何可见的影响(除了使将来remove_min稍快一些),但它在技术上仍然会“改变堆”。