公務人員特種考試計算機大意112 年第 8 題單選題
下列關於堆積(Heap)的敘述何者錯誤?
A堆積必須是一個完美二元樹(perfect or full binary tree)正確答案
B在最大堆積(max heap)中,每一個節點的值都不小於兒子們的值
C堆積是一個可利用陣列來實作的樹狀資料結構
D堆積可用於排序,利用堆積完成排序的演算法稱作堆積排序(heap sort)
A正確答案
堆積是「完整二元樹(complete)」而非「完美/滿二元樹(perfect/full)」,這是最經典的名詞陷阱。
為什麼答案是 A
錯誤敘述(題目要選的答案)。Heap 的要求是「完整二元樹(complete binary tree)」:除最後一層外都填滿,最後一層節點靠左排列;不需要是 perfect(每層全滿)或 full(每節點 0 或 2 個子)。
載入中…
完整詳解
Pro · 無限重點 堆積是「完整二元樹(complete)」而非「完美/滿二元樹(perfect/full)」,這是最經典的名詞陷阱。
看到「必須是 perfect/full binary tree」直接選錯!Heap 只要求 complete 即可。
逐選項分析
A✓ 正確
錯誤敘述(題目要選的答案)。Heap 的要求是「完整二元樹(complete binary tree)」:除最後一層外都填滿,最後一層節點靠左排列;不需要是 perfect(每層全滿)或 full(每節點 0 或 2 個子)。
B✕
正確。Max heap 的定義:父節點值 ≥ 子節點值;Min heap 則相反。此性質確保 root 一定是最大/最小值,用於優先佇列。
C✕
正確。Heap 因為是完整二元樹,可用陣列緊湊儲存:索引 i 的左子在 2i、右子在 2i+1、父節點在 i/2(1-based),不需要指標。
D✕
正確。Heap sort 利用 max heap 反覆取出最大值放到陣列尾端,時間複雜度 O(n log n),空間 O(1),為不穩定排序。
三種二元樹比較(必考!)
| 類型 | 定義 | 範例 | Heap 是否要求 |
|---|
| Full(滿) | 每個節點有 0 或 2 個子 | 每節點非葉即雙子 | ❌ 不要求 |
| Perfect(完美) | 所有內部節點都有 2 子且葉子同層 | 完全對稱 | ❌ 不要求 |
| Complete(完整) | 除最後層外填滿,最後層靠左 | 可能最後層缺右側 | ✅ 必須是 |
命題者把「complete binary tree(完整)」偷換成「perfect or full binary tree(完美或滿)」。三者定義完全不同:Heap 只要求 complete,這是資料結構最愛考的名詞陷阱,中文翻譯混亂更容易搞錯,請務必用英文原文記憶。