Files
unisa_strutture_dati_2013_2014/utility/euler_tour/expressions/EvaluateExpressionTour.java

31 lines
749 B
Java

package utility.euler_tour.expressions;
import utility.euler_tour.EulerTour;
import position.Position;
import tree.binarytree.BinaryTree;
/**
* Created with MONSTER.
* User: xgiovio
* Date: 27/04/2014
* Time: 13:09
*/
public class EvaluateExpressionTour extends EulerTour<ExpressionTerm,Integer> {
public Integer execute(BinaryTree<ExpressionTerm> T) {
init(T);
return eulerTour(tree.root());
}
protected void visitRight(Position<ExpressionTerm> v, TourResult<Integer> r) {
ExpressionTerm term = v.element();
if (tree.isInternal(v)) {
ExpressionOperator op = (ExpressionOperator) term;
op.setOperands(r.left, r.right);
}
r.out = term.getValue();
}
}