LONGEPASS
Q211.

假設有一個infix 運算式(A – B) * (C + D),我們建造其所對應的運算樹(Expression Tree),下列那些正確?

電腦軟體設計共同科目 · 乙級 · Q211

難易度分析

4 / 5

本題為複選題,要求考生同時掌握運算樹的建構以及多種走訪演算法(Preorder, Postorder, Inorder, BFS, DFS)的定義。由於需逐一判定所有選項的正確與否,且選項中包含對走訪名稱的混淆陷阱,因此對概念的精確度要求較高。

正確答案 (複選):①, ③

  • ① 後序追蹤(Postorder Traversal) 為 A B – C D + *:後序追蹤(Postorder Traversal) 的順序為「左子樹→右子樹→根節點」。此運算樹的左子樹為 A B –,右子樹為 C D +,根節點為 *,組合後即為 A B – C D + *,符合後序走訪規則,可得到 postfix 表示法。
  • ③ * - AB +C D 為深度優先搜尋(Depth First Search)的可能順序:深度優先搜尋(DFS) 的前序走訪(Preorder)順序為先存取根節點 *,再遞迴走訪左子樹 – A B,最後走訪右子樹 + C D,合併即為 * – A B + C D**,屬於 DFS 的合法走訪順序。

錯誤選項解析

  • ② 前序追蹤(Inorder Traversal) 為 - A B * + C D:選項描述有誤,前序追蹤 應為 Preorder Traversal 而非 Inorder Traversal(中序追蹤)。正確的前序走訪(根→左→右)結果應為 * – A B + C D,而非選項所述的 – A B * + C D。此外,中序走訪才會得到原始 infix 形式 A – B * C + D**(需加括號保持運算優先順序)。
  • ④ A B C D - + * 為廣度優先搜尋(Breadth First Search)的可能順序:廣度優先搜尋(BFS) 即為階層走訪(Level Order Traversal),應由上而下、由左而右依序存取各層節點。此運算樹第一層為 *,第二層為 – +,第三層為 A B C D,正確 BFS 順序應為 * – + A B C D,而非選項所述的 A B C D – + ***。
Learning Tip

"本題核心考點為運算樹(Expression Tree) 的各種走訪方式與樹狀搜尋演算法的對應關係。常考陷阱:① 前序(Preorder) 不等於 中序(Inorder),選項常故意混淆名詞;② BFS 等於階層走訪,必須由根節點開始逐層展開,不可與後序結果混淆;③ 運算樹的後序 = postfix、前序 = prefix、中序 = infix,此為資料結構必背觀念。實務上編譯器利用運算樹進行語法分析與最佳化,理解走訪順序有助於掌握抽象語法樹(AST) 的運作原理。"

學員答題分佈

①後序追蹤(Postorder Traversal) 為 A B – C D + *0%
②前序追蹤(Inorder Traversal) 為 - A B * + C D0%
③* - AB +C D 為深度優先搜尋(Depth First Search)的可能順序0%
④A B C D - + * 為廣度優先搜尋(Breadth First Search)的可能順序0%

此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!

相似類型題目