Heap
定義:堆積分成Min heap與Max heap兩種。Min heap必須具備
的條件:
(1) 是一棵complete binary tree。
(2) 是一棵min tree。
Max heap必須具備的條件:
(1) 是一棵complete binary tree。
(2) 是一棵max tree。
例:
Max heap Min heap
50 12
34 27 18 26
5 7 2 24 37
註:
min tree是 tree且每個node的key value皆不大於其children。
max tree是 tree且每個node的key value皆不小於其children。
我們將以Java Applet 的方式,簡單介紹Max heap的基本操作。
程式基本操作簡介:
★新增(亂數新增):
按此順序的方式新增:
1
2 3
4 5 6 7
8……
按新增後的動作如下:
1.找出下一個可以新增的位置,如圖中的8
2.將新增的節點插到正確的位置
3.若比父節點的值大則與父節點對調,對調完畢。若上面還有節
點則繼續比較下去,直到符合max tree的定義
★刪除最大:即刪除樹根。
按刪除最大後的動作如下:
1.找到目前最後一位置的節點,如圖中的7
2.將樹根刪除,並將7號節點移至樹根
3.新樹根與其children比較,若比其子節點小則對調,對調完畢。
若下面還有節點則繼續比下去,直到符合Max tree的定義。