2.8.3 - Symmetric Min-Max Heap
1. 定義
是一個Complete Binary Tree,Root不存Data,滿足:
左兄弟 ≤ 右兄弟
節點x的祖父的左子點必須 ≤ x
節點x的祖父的右子點必須 ≥ x
對於節點i來說,i的左子點是i的子樹中的最小值(不含i)。
對於節點i來說,i的右子點是i的子樹中的最大值(不含i)。
2. 運作
2.1 Insert x in an SMMH
將x放置於最後一個節點的下一個位置
檢查是否滿足: 左兄弟 ≤ 右兄弟,若違反則左右對調
檢查是否滿足: 節點x的祖父的左子點必須 ≤ x,若違反則對調
檢查是否滿足: 節點x的祖父的右子點必須 ≥ x,若違反則對調
2.2 Delete min in an SMMH
從Root的左子點取出最小值,形成空格E
檢查是否滿足: 左兄弟 ≤ 右兄弟
找出k = min{E的左子點, E的右兄弟的左子點},若x ≤ k,則將x置入E;若x > k則將k置入E,E則變到k原先的位置。重複此步驟直到滿足。
Last updated