2.8.3 - Symmetric Min-Max Heap

1. 定義

是一個Complete Binary Tree,Root不存Data,滿足:

  1. 左兄弟 ≤ 右兄弟

  2. 節點x的祖父的左子點必須 ≤ x

  3. 節點x的祖父的右子點必須 ≥ x

對於節點i來說,i的左子點是i的子樹中的最小值(不含i)。

對於節點i來說,i的右子點是i的子樹中的最大值(不含i)。

2. 運作

2.1 Insert x in an SMMH

  1. 將x放置於最後一個節點的下一個位置

  2. 檢查是否滿足: 左兄弟 ≤ 右兄弟,若違反則左右對調

  3. 檢查是否滿足: 節點x的祖父的左子點必須 ≤ x,若違反則對調

  4. 檢查是否滿足: 節點x的祖父的右子點必須 ≥ x,若違反則對調

2.2 Delete min in an SMMH

  1. 從Root的左子點取出最小值,形成空格E

  2. 檢查是否滿足: 左兄弟 ≤ 右兄弟

  3. 找出k = min{E的左子點, E的右兄弟的左子點},若x ≤ k,則將x置入E;若x > k則將k置入E,E則變到k原先的位置。重複此步驟直到滿足。

Last updated