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的定義。

 

    秀出範例畫面