前中後序轉換
2026/6/2
2026/6/2
中序轉換成前序或後序的兩個要點:
前序就是將運算元移動貼到左括號。例如(A+B) => (+AB)
後序就是將運算元移動貼到右括號。例如(A+B) => (AB+)
例如:A + B * (C + D) + E / F 轉為前序及後序。
先把運算式所有隱藏的括號加上去,會得出
((A + ( B * ( C + D ))) + ( E / F ))
一個個括號接續處理,假如要轉換成前序,就是把願算元放到括號左邊
先從最內層的括號開始,(C + D) => (+ C D) ; (E / F) => (/ E F)
目前可以得出 ((A + ( B * ( + C D ))) + ( / E F ))
內層括號解完,開始慢慢往外解,( B * ( + C D )),乘號往前放,會得出
(* B ( + C D )),在這我會先把內層括號先去掉,看起來比較不會那麼亂 => (* B +CD)
再往外解一層(A + (*B+CD)) => (+ A (*B+CD)) => (+ A *B+CD)
接下來只剩下最後一個運算元了
(+A*B+CD + /EF ),一樣+號往左邊放再去括號 => (+ +A*B+CD /EF ) => ++A*B+CD /EF,這個中序轉前序結果即++A*B+CD/EF
中序轉後序一樣概念,只是運算元放的位置變成貼近右括號。