它是一種樹形組織,使咱們能迅速肯定包含最大值(或最小值)的結點。數組
具體來講,堆是一顆左平衡的二叉樹。隨着結點的增長,樹會逐級從左到右增加。spa
(左平衡是指,若是一棵平衡樹的最後一層的全部葉子結點都在最靠左邊的位置上,則稱這棵樹是左平衡的。)blog
堆狀態的二叉樹是「局部有序」的,任何一個結點與其兄弟結點之間都沒有必然的順序關係,但它與其父子結點有大小順序關係。二叉樹
最大值堆:子結點比父結點小,根結點是樹中最大的結點。遍歷
最小值堆:子結點比父結點大,根結點是樹中最小的結點。im
對於堆來說,比較好的表示左平衡二叉樹的方式是,將結點經過「層級(水平)遍歷」的方式連續存儲到一個數組中。img
假設i是樹中的某一結點,co
其父結點位於(i-1)/2處(忽略小樹部分);ps
左子結點位於2i+1處;
右子結點位於2i+2處;
這樣的組織結構或方式對於堆來講很是重要,經過它咱們能迅速定義堆的最後一個結點,最後一個結點指處於樹中最深層最右端的結點。