一、Heap
1.1 基本觀念介紹
Heap 有兩種分為資料結構和記憶體,都是取累積傾向的意思,而這邊要講的是資料結構的 Heap。
Heap 常見的實作為 Binary Heap,它的樹為 complete binary tree (完全二元樹) 如上圖。一棵依序節點可以從上到下、從左到右的表示為 1, 3, 6, 5, 9, 8。如果刪掉 node 9 那麼這便不是棵完全二元樹;如果拿掉 node 8 仍然是棵完全二元樹,因為整棵樹仍然可以從上到下、從左到右的表示成 1, 3, 6, 5, 9。
- 新增節點時優先從左到右填滿階層後才往下一層
- 概念基於 binary Tree,每個 node 下面最多只會有兩個 child,也有可能是一個或沒有
- 常使用 array 來實作,由左至右、由上到下表示出一個完全二元樹
- 若目前的 node 的 index 是 i,left child node 的 index 就是 i * 2 + 1,right child node 的 index 是 i * 2 + 2