2.8.1 - Min-Max Heap
1. 定義
是一個Complete Binary Tree且滿足:
此樹的level是以min-level與max-level交替出現
Root位於min-level
若x位於min-level,則表示以x為root的子樹中,x是最小值,反之亦然
2. 運作
2.1 insert x in a max-min heap
將x放到最後一個節點的下一個位置
考慮x的父點位於max/min level:
max: 如果x比祖父點大,則x和祖父點交換,並往上驗證
min: 如果x比祖父點小,則x和祖父點交換,並往上驗證
2.2 delete min in a max-min heap
移走root取得min
將最後一個節點x刪除
將x插入原本的root中
若root無子點,則結束
若root子孫中的最小值k是root的左右子點的其中一個,如果x>k則交換位置
若root子孫中的最小值k是root的子孫中的一個,k的父點p,如果x>k,則交換位置,接著x和p比較,若x>p則互換位置,並重複第三步
Last updated