标签: heap
我想按排序顺序打印堆(从最小到最大),但不要更改堆。 我知道我可以对一个临时数组执行remove_min并打印直到它为空并插回。 还有更好的方法吗?
答案 0 :(得分:0)
最直接的方法是制作堆的副本,然后从副本中删除remove_min。 (这与HeapSort的后半部分基本相同。)
清空原始堆,然后重新填充它,将更改堆元素的内部顺序。虽然这不会对堆的外部行为造成任何可见的影响(除了使将来remove_min稍快一些),但它在技术上仍然会“改变堆”。
remove_min