1. 程式人生 > >數據結構 - 堆

數據結構 - 堆

節點 元素 src 排列 大堆 最大的 圖片 它的 完全二叉樹

二叉堆的定義:

1.二叉堆是一個完全二叉樹結構。完全二叉樹不一定是一個滿二叉樹。完全二叉樹左節點必須是滿的,右節點為可以為空。把元素一層一層的從左往右依次排列。

2.當滿足該節點的左右孩子節點都小於該節點時,稱為最大堆。反之,當該節點的左右孩子節點大於該節點時,稱為最小堆。

技術分享圖片

技術分享圖片技術分享圖片

技術分享圖片技術分享圖片

Sift Up(上浮):當我們往堆中添加了個元素的時候,在堆的最後添加一個元素,再將該元素進行上浮操作,即和它的父節點一直進行比較,若比它的父節點大則交換位置,否則不動。

Sift Down(下沈):當我們取出堆中最大的元素時,首先將根元素和最尾端的元素進行交換位置,然後刪掉最尾端的元素,然後再將此時的頂端元素進行下層操作,即將該元素和它的左右孩子中的最大的一個進行比較,若比它小則交換位置否則不動 。

數據結構 - 堆