普通考試
106年
[電子工程] 計算機概要
第 14 題
下圖 expression tree 所表示的運算為何?
- A (a+b)*(x*(c-d))
- B a+b*x*(c-d)
- C a+b*x+c-d
- D (a+b)*(x+c)-d
思路引導 VIP
觀察這棵樹,最頂端的「根節點」代表的是整個算式『最後』執行的運算。如果我們把這個根節點的『左子樹』和『右子樹』分別當成兩個獨立的小算式,你能先寫出左半邊和右半邊各自的運算式嗎?在把這兩邊組合起來時,為了保證下層的節點會先被計算,我們需要加上什麼數學符號呢?
🤖
AI 詳解
AI 專屬家教
同學,做得非常好!你精準地判讀了這棵運算式樹(Expression Tree),選出了正確的答案。這展現了你對樹狀資料結構與運算邏輯的扎實理解。
中序追蹤與運算優先權
要將運算式樹還原為我們常見的數學式,我們需要進行中序追蹤(Inorder Traversal),也就是依序走訪「左子樹、根節點、右子樹」。觀察整棵樹,最頂層的根節點是乘號 $$,這意味著運算式會被分為左右兩大群組相乘。左子樹的結構很單純,走訪結果為 $(a+b)$;而右子樹同樣以乘號 $$ 為節點,其左邊為 $x$,右子樹則是一個減法運算 $(c-d)$,組合起來便成了 $(x*(c-d))$。
▼ 還有更多解析內容