顯示具有 Heap 標籤的文章。 顯示所有文章
顯示具有 Heap 標籤的文章。 顯示所有文章

2022/06/14

簡單輕鬆十分鐘學會 Heap (堆疊) 刷 LeetCode

一、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