Heap 是一種完全二元樹(Complete Binary Tree),並且具有一個特殊的性質:每個節點的值都必須大於等於(或小於等於)其子節點的值。這種性質稱為「堆積性質」(Heap Property)。
Heap 可以使用一個一維陣列來實現,並且通常使用以下的方式來存放資料:
將資料依序存放在陣列的 index 1 到 n 的位置中,其中 n 為資料的總數。
如果某個節點的 index 為 i,則其左子節點的 index 為 2i,右子節點的 index 為 2i+1。
父節點的 index 為 i/2(向下取整)。
使用 Heap 可以快速地找到最大值或最小值,並且可以在 O(log n) 的時間內執行插入或刪除操作,因此 Heap 被廣泛地應用於排序算法中,如 Heap Sort 和優先級佇列(Priority Queue)。