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 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!
相似類型題目
下列為含有六個運算元之運算式,此運算式是以後序追蹤(Postorder Traversal)方式表示,其中"*"表示乘法運算,這些後序追蹤所對應的運算樹(Expression Tree),其高度何者是最高?
下列那些對運算式a/(b+c)*d-e 的敘述為正確?
假設有一個Postfix 運算式A B + C / C B + D * +,而其值為A=3,B=6,C=3,D=2 。該運算式執行之後,十位數為m,個位數為n,下列那些正確?
下列為含有五個運算元之運算式,此運算式是以後序追蹤(Postorder Traversal)方式表示,其中"*"表示乘法運算,這些後序追蹤所對應的運算樹(Expression Tree),其高度何者是最高?
某二元樹(Binary Tree)之中序走訪(Inorder Traversal)為EFGBHCDATRS,而後序走訪(Postorder Traversal)為GFEHDCBTSRA,對於該二元樹之性質,下列敘述何者是正確的?