編譯器
運算式 2 + 3 * 4 的抽象語法樹之形狀,下列何者正確?
- A根節點是 + 的節點,其右子節點是表示 3 * 4 的 * 節點
- B根節點是 * 的節點,其左子節點是表示 2 + 3 的 + 節點
- C2、3、4、+、* 這5個節點全部並列為根節點的直接子節點
查看答案與解析
正確答案:A. 根節點是 + 的節點,其右子節點是表示 3 * 4 的 * 節點
乘法的優先順序高於加法,所以此運算式會被解釋為 2 + (3 * 4)。在抽象語法樹中,越先計算的運算會放在越下面,所以根節點是 +,其左子節點是2,右子節點是以3和4為子節點的 * 節點。若由下往上對樹求值,會先計算 3 * 4 = 12,再得到 2 + 12 = 14。根節點成為 * 的是寫成 (2 + 3) * 4 的情況,而把全部並列在根節點之下,則無法表示計算的順序。
- A. 正確。優先順序較高的 * 在下面,根節點是 +。
- B. 根節點成為 * 的是 (2 + 3) * 4 的情況。
- C. 若平鋪並列,就無法表示計算的順序。