completato binary tree e implementato euler tour astratto + una sua implementazione per computazione aritmetica

This commit is contained in:
2014-04-27 13:38:06 +02:00
parent cd1a246d4f
commit 4f68dd31d1
11 changed files with 208 additions and 6 deletions

41
euler_tour/EulerTour.java Normal file
View File

@@ -0,0 +1,41 @@
package euler_tour;
import tree.binarytree.*;
import position.Position;
public abstract class EulerTour<E, R> {
protected BinaryTree<E> tree;
public abstract R execute(BinaryTree<E> T);
protected void init(BinaryTree<E> T) { tree = T; }
protected R eulerTour(Position<E> v) {
TourResult<R> r = new TourResult<R>();
visitLeft(v, r);
if (tree.hasLeft(v))
r.left = eulerTour(tree.left(v));
visitBelow(v, r);
if (tree.hasRight(v))
r.right = eulerTour(tree.right(v));
visitRight(v, r);
return r.out;
}
protected void visitLeft(Position<E> v, TourResult<R> r) {}
protected void visitBelow(Position<E> v, TourResult<R> r) {}
protected void visitRight(Position<E> v, TourResult<R> r) {}
public class TourResult<R> {
public R left;
public R right;
public R out;
}
}