1. Converting Infix to RPN
1. By hand: Represent infix expression as an expression tree:
A * B + C A * (B + C) ((A + B) * C) / (D - E)
+ * /
A * -
* C +
A B + C D E
B C
A B
2. /
Traverse the tree in Left-Right-Parent
order (postorder) to get RPN:
* -
AB+C*DE-/
+ C D E
Traverse tree in Parent-Left-Right /
order (preorder) to get prefix: A B
* -
/ * + A BC- D E
+ C D E
Traverse tree in Left-Parent-Right /
order (inorder) to get infix A B
— must insert ()'s * -
( ((A + B) * C) (D - E) )
/ + C D E
A B
3. 2. By hand: "Fully parenthesize-move-erase" method:
1. Fully parenthesize the expression.
2. Replace each right parenthesis by the corresponding operator.
3. Erase all left parentheses.
Examples:
A * B + C → ((A * B) + C) A * (B + C) → (A * (B + C) )
→ ((A B * C + → (A (B C + *
→ A B * C + → A B C + *
Exercise:
((A + B) * C) / (D - E)