package visitor;

public class TreeNode<T> {
   TreeNode<T> left;
   TreeNode<T> right;
   T datum;
   
   TreeNode(TreeNode<T> l, TreeNode<T> r, T d) {
      left = l;
      right = r;
      datum = d;
   }
   
   void traverse(Visitor<T> v) {
      v.visitPre(datum);
      if (left != null) left.traverse(v);
      v.visitIn(datum);
      if (right != null) right.traverse(v);
      v.visitPost(datum);
   }

}
