[LeetCode] 什麼是 Heap?
什麼是 Heap?
Heap 是一種特殊的 Tree,它滿足以下性質:
- 它是一個完全二叉樹(Complete Binary Tree)
- parent node 的值總是會一直大於 child node (Max Heap) 或小於 child node (Min Heap)
範例如下
最大堆(Max Heap)
- parent nodes 總是比 child nodes 大
- parent node 最多只能有 2 個 childe nodes
- Binary Heap 能越緊密就越緊密 (compact),每個 node 的 children 會盡可能被填滿,且會從左邊開始填,不像 Binary search tree 可以 node 都在同一邊,像 Linked List 一樣
最小堆(Min Heap)
- parent nodes 總是比 child nodes 小
- parent node 最多只能有 2 個 childe nodes
❌ Not a Binary Heap
- 33 < 41
- 41 > 39
沒有所有節點符合都大於 or