本章節要談的是 Leftist Heap,會先從緣由開始讓大家開始了解。此外,會先有一些先備知識要先知道,才能來定義Leftist Heap,不過不用擔心,這邊都會提!
為了改善 merge 2 Heap 的時間才出現的,我們來回想一下,以前在 Heap 章節,談到合併兩個 Heap 的方法,是透過將兩個 Heap 所有資料放在 Array 中,再來進行 Bottom-up 的建置,時間會是 O(n)
而 Leftist Heap 能夠把合併時間降到 O(logn) !
我們先來定義何謂 Shortest(x)
若 x 是 extended B.T 中的任一點,則其為
針對 extended B.T 中所有內部節點 x
其 shortest( x 的左子點) ≥ shortest( x 的右子點)
假設我們以 Leftist min Heap 為例,我們可以定義 leftist heap 是
1. Leftist tree
2. min tree (all parent ≤ child)
所以我們也可以稱之為 min Leftist Tree
現在就來講最重要的 merge