五等-統計資料處理大意108 年第 11 題單選題
處理具備回溯(Backtracking)特性的問題時,例如,八皇后問題、迷宮問題,通常會利用那一種資料結構來協助問題解決?
A佇列(Queue)
B堆疊(Stack)正確答案
C堆積(Heap)
D樹(Tree)
B正確答案
回溯演算法採用深度優先搜尋(DFS),需要後進先出特性來記住走過的路徑並回退,因此使用堆疊。
為什麼答案是 B
堆疊是後進先出(LIFO),每踏一步就 push,走不通就 pop 回到上一個決策點再試其他路徑,完美契合回溯精神。遞迴呼叫本身也是靠系統堆疊實作。
載入中…
完整詳解
Pro · 無限重點 回溯演算法採用深度優先搜尋(DFS),需要後進先出特性來記住走過的路徑並回退,因此使用堆疊。
看到「回溯 Backtracking」「迷宮」「DFS」→ 直接選堆疊(Stack)。
逐選項分析
A✕ 陷阱
佇列是先進先出(FIFO),用於廣度優先搜尋(BFS),例如層級走訪、最短路徑。無法支援「退回上一步」的回溯需求。
B✓ 正確
堆疊是後進先出(LIFO),每踏一步就 push,走不通就 pop 回到上一個決策點再試其他路徑,完美契合回溯精神。遞迴呼叫本身也是靠系統堆疊實作。
C✕
堆積是一種完全二元樹,用來實作優先佇列(Priority Queue),常見於堆積排序、Dijkstra 最短路徑,和回溯無直接關聯。
D✕ 陷阱
雖然回溯過程可視為在「解答樹」上搜尋,但樹是抽象的問題模型,實際「走訪」仍須靠堆疊(或遞迴)輔助,題目問的是實作工具。
資料結構 vs 典型應用
| 結構 | 特性 | 典型演算法 | 經典題型 |
|---|
| Stack | LIFO 後進先出 | DFS、回溯 | 八皇后、迷宮、遞迴 |
| Queue | FIFO 先進先出 | BFS | 最短路徑、層級走訪 |
| Heap | 父子有序 | Heap Sort | 優先佇列、Top-K |
| Tree | 階層關係 | 走訪、搜尋 | BST、決策樹 |
最常見陷阱是把 Stack 和 Queue 搞反。記憶口訣:回溯=退回去=後進先出=Stack;廣度=一層層=先進先出=Queue。另一個陷阱是選 Tree,因為題目雖有樹狀解空間,但實作工具是 Stack。