class Main {
	public static void main(String args[]) {
		LinkedBinaryTree t = new LinkedBinaryTree();
		// Hier maak ik de boom aan...
		t.addRoot("a");
			t.insertRight(t.root(), "c");
			t.insertLeft(t.root(), "b");
				t.insertLeft(t.right(t.root()), "f");
				t.insertRight(t.left(t.root()), "e");
				t.insertLeft(t.left(t.root()), "d");
					t.insertRight(t.left(t.right(t.root())),"k");
					t.insertLeft(t.left(t.right(t.root())),"j");
					t.insertRight(t.right(t.left(t.root())), "i");
					t.insertLeft(t.right(t.left(t.root())), "h");
					t.insertRight(t.left(t.left(t.root())), "g");
		
		header();
		Iterator i = new PositionIterator();
		// geeft een lijst van de boom in 'Inorder Traversal' volgorde
		i = t.positions();
		BTNode node;
		for(int j = 0; j < t.size(); j++) {
			if (i.hasNext()) {
				node = (BTNode)i.next();
				tabs(depth(t, node));
				System.out.println(node.element());
			}
		}
			
	}
	public static void tabs(int d) {
		int i = 0;
		while( d != 0 && i < d) {
			System.out.print("\t");
			i++;
		}
	}

  	public static int depth (Tree T, Position v) {
    		if (T.isRoot(v))
      			return 0;
    		else
      			return 1 + depth(T, T.parent(v));
  	}
	
	public static void header() {
		System.out.println("\n\n************************************************************");
		System.out.println("Erik van den Hooven (0323268), erik.hooven@zeelandnet.nl\n");
		System.out.println("Het was al wat laat daarom heb ik het hier maar bij gelaten");
		System.out.println("Ik heb besloten dat je op deze manier zelfs kan zien wie bij");
		System.out.println("welke 'parent' hoort.\n\nMvg. Erik");
		System.out.println("************************************************************");
	}
}