大頂堆構造過程


大頂堆性質

堆是一種特殊的完全二叉樹,使用數組存儲二叉樹時,若某個非葉子節點存儲在下標為i的位置,其左右孩子節點分別存儲在下標為2i+1和2i+2的位置。

堆可以分為大頂堆和小頂堆,對大頂堆來說,任意非葉子節點不小於其左右孩子節點,對於小頂堆來說,任意非葉子節點不大於其左右孩子節點。若使用數組存儲大頂堆,則滿足:arr[i] >= arr[2i+1] && arr[i] >=arr[2i+2](i為非葉子節點的在數組中的下標)


 

 構造大頂堆

基本思想:

1、從最后一個非葉子節點開始,逐一比較非葉子節點和其左右孩子節點

2、根據比較結果交換節點

3、因為交換可能導致孩子節點不再滿足大頂堆的性質,所以需要對孩子節點進行調整。

例子:

 

初始

從最后一個非葉子結點開始,分別比較非葉結點和其左右孩子節點的大小。

 

無需調整

 

無需調整

 

無需調整

需要交換元素

 

無需調整

 

交換元素位置

 

 

交換后可能造成被交換的孩子節點不滿足堆的性質,因此每次交換后需要重新對交換的孩子節點進行調整。

 
 
 

 

 

 
 

 

大頂堆建立完成

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM