/**
* This traversal specializes EulerTour to print out the
* arithmetic expression stored in the tree. It assumes that the
* elements stored in the nodes of the tree support a toString
* method that prints the value at an external node or the
* operator at an internal node.
*/
public class PrintExpressionTour extends EulerTour {
public Object execute(BinaryTree T) {
super.execute(T);
System.out.print("Expression: ");
eulerTour(T.root());
System.out.println();
return null; // nothing interesting to return
}
protected void visitExternal(Position p, TraversalResult r) {
System.out.print(p.element());
}
protected void visitLeft(Position p, TraversalResult r) {
System.out.print("(");
}
protected void visitBelow(Position p, TraversalResult r) {
System.out.print(p.element());
}
protected void visitRight(Position p, TraversalResult r) {
System.out.print(")");
}
}