It is possible to represent arithmetic, parenthesized expressions using a tree. If a node is an operator, such as a plus or a division sign, then each of the two children must be either a number or an expression which will evaluate to a number. In other words, the two children of an operator will be its operands.

The above represents (3 + 4).

Problem : Convert the following expression into such a tree: ((3 + 4)*5)/6

The basic procedure is to determine which operations can be done first (that is, those that are not dependent on any other operations). Make trees for those, and then continue this process using the newly formed trees as operands.

Problem : Convert the following expression into such a tree: 3 + 4*(5/6)

Problem : How could you use this tree representation to devise a scheme to represent the expressions without using any parentheses. Hint: Consider a the different sorts of traversals. See the recursion SparkNote for information on tree traversals.

If you a post-order traversal, for example, you can create an expression which is unambiguous and does not use parentheses. In math, this form is called postfix notation. The way that it can be unambiguously resolved is that whenever you hit an operator, the two operands for it will be immediately preceding it. For example:

2 3 4 + *

means add the 3 and the 4 and then multiply by 2. Its parenthesized equivalent is: 2*(3 + 4)