package visitor;

public class VisitorTest implements Visitor<Character> {
   
   public static void main(String[] args) {
      
      TreeNode<Character> t1 = new TreeNode<Character>(null, null, 'a');
      TreeNode<Character> t2 = new TreeNode<Character>(null, null, 'b');
      TreeNode<Character> t3 = new TreeNode<Character>(null, null, 'c');
      TreeNode<Character> t4 = new TreeNode<Character>(null, null, 'd');
      TreeNode<Character> t5 = new TreeNode<Character>(t1, t2, 'e');
      TreeNode<Character> t6 = new TreeNode<Character>(t3, t4, 'f');
      TreeNode<Character> t7 = new TreeNode<Character>(t5, t6, 'g');
      
      VisitorTest vt = new VisitorTest();
      t7.traverse(vt);
      System.out.println(vt.preorder.toString());
      System.out.println(vt.inorder.toString());
      System.out.println(vt.postorder.toString());
   }
   
   StringBuilder preorder = new StringBuilder();
   StringBuilder inorder = new StringBuilder();
   StringBuilder postorder = new StringBuilder();

   public void visitPre(Character datum) {
      preorder.append(datum);      
   }
   
   public void visitIn(Character datum) {
      inorder.append(datum);      
   }

   public void visitPost(Character datum) {
      postorder.append(datum);      
   }
}
