模板 堆的結構

2022-04-21 17:35:16 字數 607 閱讀 8291

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

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

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

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

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

i  節點的子節點編號為  2*i+1  和  2*i+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 節點的子節點編號為 2i 1 和 2i 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 模板類實現

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