2.8.12 - Binomial Heap
1. Binomial Tree
: 高度為0的Binomial Tree,只有Root一點。
: 高度為k的Binomial Tree,是由兩棵高度為k-1的 所組成。
圖示:
中第個level的節點數為
中第節點總數為
2. Binomial Heap
Binomial Heap是由一組Binomial Tree所組成的Forest,且每一棵Binomial Tree必須是min-tree。(子點 ≥ 父點)
若Data數為 ,則Binomial Heap只有一棵Binomial Tree
若Data數為 ,則Binomial Heap有 棵Binomial Tree
3. 運作
3.1 Merge(H1, H2)
在H1, H2中,合併具有相同高度的Binomial Trees,較小的Root當成新的Root,另一棵為其子樹,合併順序無所謂,直到H1, H2中沒有相同高度的Binomial Trees。
最有有 棵Binomial Trees要合併,時間複雜度為O(logn)。
3.2 Delete min in an Binomial Heap
找到具有最小值Root的Binomial Tree, T,其餘Trees的集合為H2
從T的Root取出最小值,T剩下的子樹為H1
Merge(H1, H2)
3.3 Insert x in an Binomial Heap
x自己成為一個Binomial Heap, H2
Merge(H1, H2)
時間複雜度: 大部分為O(1),當Binomial Heap merge之後會變成只有一棵Binomial Tree的時候為O(logn)。
Last updated