0
我想按排序順序打印一個堆(從最小到最大),但不要改變堆。 我知道我可以做一個臨時數組的remove_min並打印,直到它爲空並插回去。 有沒有更好的方法?如何按排序順序打印堆而不更改它?
我想按排序順序打印一個堆(從最小到最大),但不要改變堆。 我知道我可以做一個臨時數組的remove_min並打印,直到它爲空並插回去。 有沒有更好的方法?如何按排序順序打印堆而不更改它?
最簡單的方法是製作堆的副本,然後從副本中移除remove_min。 (這與HeapSort的後半部分基本相同。)
清空原始堆,然後重新填充它,將更改堆元素的內部排序。雖然這不會對堆的外部行爲產生任何明顯的影響(除了使未來的remove_min
稍微快一點),它在技術上仍然是「改變堆」。