46 lines
1011 B
Java
46 lines
1011 B
Java
package euler_tour.expressions;
|
|
|
|
import euler_tour.EulerTour;
|
|
import position.Position;
|
|
import tree.binarytree.BinaryTree;
|
|
|
|
/**
|
|
* Created with MONSTER.
|
|
* User: xgiovio
|
|
* Date: 27/04/2014
|
|
* Time: 13:11
|
|
*/
|
|
public class StringExpressionTour extends EulerTour<ExpressionTerm,String> {
|
|
|
|
public String execute(BinaryTree<ExpressionTerm> T) {
|
|
init(T);
|
|
return eulerTour(T.root());
|
|
}
|
|
|
|
|
|
|
|
protected void visitLeft(Position<ExpressionTerm> v, TourResult<String> r) {
|
|
if (tree.isInternal(v)) {
|
|
r.out = new String("(");
|
|
}else {
|
|
r.out = new String("");
|
|
}
|
|
}
|
|
|
|
protected void visitBelow(Position<ExpressionTerm> v, TourResult<String> r) {
|
|
if (tree.isInternal(v)) {
|
|
r.out += r.left;
|
|
}
|
|
r.out += v.element();
|
|
}
|
|
|
|
protected void visitRight(Position<ExpressionTerm> v,TourResult<String> r) {
|
|
if (tree.isInternal(v)) {
|
|
r.out += r.right;
|
|
r.out += ")";
|
|
}
|
|
}
|
|
|
|
|
|
}
|