模板 堆的結構

2021-08-09 16:24:21 字數 629 閱讀 4259

這裡是最小堆,最大堆也是類似的。

1.堆是一顆完全二叉樹。

性質:子節點的值一定不小於父節點的值。

堆的儲存用乙個陣列heap[n]即可。

由於完全二叉樹的性質,節點是按順序排列的,

i 節點的子節點編號為 2i+1 和 2i+2 。

同理 i 節點的父節點為 (i-1)/2 。

操作:堆有插入和刪除兩種操作,由於是二叉樹,兩種操作都是o(logn) 的 。

實現c++**:

#include

using namespace std;

#define max_n 1000

int heap[max_n]

,sz =0;

void

push

(int x)

//迴圈退出的時候已經找到了該放的位置

// 把新節點加入進來

heap[i]

= x;

}int

pop(

)//把最後乙個節點放到它該待的位置

heap[i]

= x;

return ret;

}int

main()

模板 堆的結構

這裡是最小堆,最大堆也是類似的。1.堆是一顆完全二叉樹。性質 兒子節點的值一定不小於父節點的值。堆的儲存用乙個陣列heap n 即可。由於完全二叉樹的性質,節點是按順序排列的,i 節點的子節點編號為 2 i 1 和 2 i 2 同理 i 節點的父節點為 i 1 2 操作 堆有插入和刪除兩種操作,由於...

模板 資料結構 堆

heap,也就是堆,作為常用的優先佇列的替代品,其實還是有優越性的。make heap v.first v.end cmp 把容器調整成堆。push heap v.first v.end cmp 在容器本身是堆,往容器的end中插入後,把end後移,再呼叫這個。pop heap v.first v....

堆結構的C 模板類實現

資料結構中堆的概念不同於 堆疊 它是指一種完全二叉樹,這種二叉樹的任一節點的關鍵字大於 或小於 其子樹的所有節點,即最大堆 最小堆 堆結構的構建採用陣列表示,與之前的二叉樹的線性儲存結構類似,主要成員函式包括插入 刪除根節點等函式。插入數值時直接在陣列的尾端增加元素,從尾端開始往上迭代判斷是否滿足堆...