public void printIterativePreOrder(JTreeNode n){
		final Deque<JTreeNode<T>> nodeTracker = new ArrayDeque<>();
		if(n==null)
			return;
		System.out.println("n : "+n.getValue());

		nodeTracker.push(n);

		while(n!=null){

			if(n.getLeftNode()!=null && !n.getLeftNode().isVisited()){
				n = n.getLeftNode();
				n.setVisited(true);
				nodeTracker.push(n);
				System.out.println("n : "+n.getValue());
			}else{

				n = nodeTracker.pop();
				if(n.getRightNode()!=null && !n.getRightNode().isVisited()){
					n = n.getRightNode();
					n.setVisited(true);
					nodeTracker.push(n);
					System.out.println("n : "+n.getValue());

				}
			}
		}

	}