2.8.2 - Deap
Deap(Double-Ended Heap)
1. 定義
Deap是一個Complete Binary Tree且滿足:
Root為空(不存Data)
Root的左子樹為min-heap
Root的右子樹為max-heap
令i為min-heap的一個節點編號,j為max-heap的一個節點編號,則Deap[i] ≤ Deap[j]
2. 運作
2.1 Insert x in a deap
將x放到最後一個節點的下一個位置
x位於min-heap中: 令j是max-heap的對應節點;若x>Deap[j],兩節點交換,接著調整min-heap使其不違反定義。反之,則調整max-heap
x位於max-heap中: 令j是min-heap的對應節點;若x<Deap[j],兩截點交換,接著調整max-heap使其不違反定義。反之,則調整min-heap
2.2 Delete min in a deap
取出root左子點的值
將最後一個節點x刪除
Root的左子點空缺由其子點的最小值往上遞補,直到空缺在leaf,其位置為i
insert(x, i)
Last updated