刷題筆記:最小堆 構建、插入、刪除的過程圖解

原文鏈接:https://blog.csdn.net/hrn1216/article/details/51465270

原文出自 :原文

1.簡介

最小堆是一棵完全二叉樹,非葉子結點的值不大於左孩子和右孩子的值。本文以圖解的方式,說明

最小堆的構建、插入、刪除的過程。搞懂最小堆的相應知識後,最大堆與此類似。

2.最小堆示例
在這裏插入圖片描述

3.最小堆的構建

初始數組爲:9,3,7,6,5,1,10,2

按照完全二叉樹,將數字依次填入。

填入後,找到最後一個結點(本示例爲數字2的節點),從它的父節點(本示例爲數字6的節點)

開始調整。根據性質,小的數字往上移動;至此,第1次調整完成。

注意,被調整的節點,還有子節點的情況,需要遞歸進行調整。

第二次調整,是數字6的節點數組下標小1的節點(比數字6的下標小1的節點是數字7的節點),

用剛纔的規則進行調整。以此類推,直到調整到根節點。

以下是本示例的圖解:
在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

注意:數字9的節點 將和 數字1的節點 發生對調,對調後,需要遞歸進行調整,請一定注意。

在這裏插入圖片描述

在這裏插入圖片描述

4.最小堆的元素插入

以上個最小堆爲例,插入數字0。

數字0的節點首先加入到該二叉樹最後的一個節點,依據最小堆的定義,自底向上,遞歸調整。

以下是插入操作的圖解:

在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述

5.最小堆的節點刪除

對於最小堆和最大堆而言,刪除是針對於根節點而言。

對於刪除操作,將二叉樹的最後一個節點替換到根節點,然後自頂向下,遞歸調整。

以下是圖解:

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述

————————————————
版權聲明:本文爲CSDN博主「Running07」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/hrn1216/article/details/51465270

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章