資料結構基礎 之 二叉堆 概念篇
阿新 • • 發佈:2019-02-12
【二叉堆定義】
二叉堆是完全二叉樹和近似二叉樹,二叉堆滿足堆特性:父節點的鍵值總是與任何一個子節點的鍵值保持固定的序關係,且每個節點的左子樹和右子樹都是一個二叉堆。當父節點的鍵值總是大於或等於任何一個子節點的鍵值時為最大堆。 當父節點的鍵值總是小於或等於任何一個子節點的鍵值時為最小堆。
【二叉堆操作】
2.二叉堆刪除:二叉堆刪除是刪除根節點,實現是把最後一個節點複製給根節點然後再對該節點進行堆化處理。
3.二叉堆排序:把根節點和最後的節點進行交換後,再對根節點進行堆化處理,如此交換和堆化後就是一個有序陣列。
4.整個陣列堆化處理,後半陣列可以看出可以預設已經堆化處理過了,只要對前半部分進行堆化處理即可。從N/2開始對所有前面節點經堆化處理。
【二叉堆時空複雜度和二叉堆原始碼】
http://blog.csdn.net/u013630349/article/details/46943503(時空複雜度)詳見:資料結構基礎 之 深入理解二叉堆建立的時空複雜
http://blog.csdn.net/wangdingqiaoit/article/details/46366205(c)
http://blog.csdn.net/listeningsea/article/details/7718484(c++)
【備註】
1.堆排序得到的二叉樹是優先佇列,但是,並不是所有優先佇列的二叉樹符合堆排序;2.二叉堆的基本操作包括建堆,插入,刪除,增減權重。