2.8.11 - Leftest Heap
Last updated
Last updated
合併2個Priority Queue(Heap)成一個Priority Queue時間複雜度為O(logn),比Heap的O(n)較快。
x為extended binary tree的ㄧ節點。
shortest(x): x到任一外部節點的最短路徑
Leftest Tree: 每一個內部節點的shortest(左子點) ≥ shortest(右子點)
Leftest Heap: 是一個Leftest Tree且父點 ≤ 子點
圖示:
比較H1與H2的root大小,找出最小的root作為新的root
(假設H1的root較小),H1的root作為新的root,且H1的左子樹保留成新的root的左子樹
Merge(H1右子樹, H2),直到變成一棵min tree(子>父)
檢查是否符合leftest heap性質(shortest(x的左子點)>shortest(x的右子點)),作違反則左右交換node。
將min從root取出,得到兩個子樹H1, H2
Merge(H1, H2)
x視為H2
Merge(H1, H2)