/** This traversal specializes EulerTour to print out the expression * stored in an arithmetic expression tree. It assumes that method * toString, when called on a node v, prints the value stored at v if * v is external and the operator stored at v, if v is internal. */ public class PrintExpressionTour extends EulerTour { public Object execute(BinaryTree T) { init(T); System.out.print("Expression: "); eulerTour(T.root()); System.out.println(); return null; // nothing interesting to return } protected void visitLeft(Position v, TraversalResult r) { if (tree.isInternal(v)) System.out.print("("); } protected void visitBelow(Position v, TraversalResult r) { System.out.print(v.element()); } protected void visitRight(Position v, TraversalResult r) { if (tree.isInternal(v)) System.out.print(")"); } }