左式堆的懶惰刪除

左式堆的懶惰刪除

在左式堆中一個已知位置刪除節點的一種方法是使用懶惰策略。要刪除一個節點,只要將其標記爲已被刪除即可。當執行一個FindMinFindMinDeleteMinDeleteMin時,若標記根節點被刪除則存在一個潛在的問題,因爲此時節點必須被實際刪除且需要找到實際的最小元,這可能涉及到刪除其他一些已做標記的節點。

在該方法中,DeleteDelete花費一個單位,但一次DeleteMinDeleteMinFindMinFindMin的開銷卻依賴於被做刪除標記的節點的個數。

Cheriton和Tarjan [1] 在論文中討論了左式堆中的懶惰刪除。一般的想法是:如果根被標記爲刪除,則形成堆的先序遍歷,並刪除標記刪除的節點,留下堆的集合。通過將所有的堆放在隊列中,每次出隊兩個堆進行合併然後將結果放在隊列的末尾,直到隊列中只有一個堆時停止操作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章