heap

文章推薦指數: 80 %
投票人數:10人

Heap. 定義:堆積分成Min heap與Max heap兩種。

Min heap必須具備. 的條件:. (1) 是一棵complete binary tree。

(2) 是一棵min tree。

Max heap必須具備的條件:. Heap   定義:堆積分成Minheap與Maxheap兩種。

Min heap必須具備         的條件:  (1) 是一棵complete binarytree。

 (2) 是一棵min tree。

       Maxheap必須具備的條件:  (1) 是一棵complete binarytree。

 (2) 是一棵max tree。

  例:         Maxheap              Minheap            50                     12                                            34       27           18     26       5         7 2        24   37     註:      mintree是 tree且每個node的keyvalue皆不大於其children。

     maxtree是 tree且每個node的keyvalue皆不小於其children。

       我們將以Java Applet的方式,簡單介紹Maxheap的基本操作。

     程式基本操作簡介:      ★新增(亂數新增):        按此順序的方式新增:                       1  2  3                   4 5 67                   8……         按新增後的動作如下:        1.找出下一個可以新增的位置,如圖中的8        2.將新增的節點插到正確的位置        3.若比父節點的值大則與父節點對調,對調完畢。

若上面還有節          點則繼續比較下去,直到符合maxtree的定義      ★刪除最大:即刪除樹根。

        按刪除最大後的動作如下:        1.找到目前最後一位置的節點,如圖中的7        2.將樹根刪除,並將7號節點移至樹根         3.新樹根與其children比較,若比其子節點小則對調,對調完畢。

          若下面還有節點則繼續比下去,直到符合Maxtree的定義。

      秀出範例畫面



請為這篇文章評分?