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