/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideoenb
{
{
// create some input
Node head = new Node(1);
head.left = new Node(2);
head.right = new Node(3);
head.right.left = new Node(4);
iterativeInorder(head);
}
static void iterativeInorder(Node head)
{
Node current = head;
while( current != null )
{
if( current.left != null && current.left.visited == false)
{
stack.push( current );
current = current.left;
continue;
}
else
{
visit(current);
current.visited = true;
}
if( current.right != null )
{
current = current.right;
}
else
{
if( ! stack.empty() )
{
current = (Node) stack.pop();
}
else
{
current = null;
}
}
}
}
static void visit(Node current)
{
System.
out.
println(current.
value+"\n"); }
}
class Node
{
public Node left=null;
public int value;
public boolean visited=false;
public Node right=null;
public Node(int value)
{
this.value = value;
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb2VuYgp7CglwdWJsaWMgc3RhdGljIFN0YWNrIHN0YWNrID0gbmV3IFN0YWNrKCk7CglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KCXsKCQkvLyBjcmVhdGUgc29tZSBpbnB1dAoJCU5vZGUgaGVhZCA9IG5ldyBOb2RlKDEpOwoJCWhlYWQubGVmdCA9IG5ldyBOb2RlKDIpOwoJCWhlYWQucmlnaHQgPSBuZXcgTm9kZSgzKTsKCQloZWFkLnJpZ2h0LmxlZnQgPSBuZXcgTm9kZSg0KTsKCQkKCQlpdGVyYXRpdmVJbm9yZGVyKGhlYWQpOwoJfQoJCglzdGF0aWMgdm9pZCBpdGVyYXRpdmVJbm9yZGVyKE5vZGUgaGVhZCkKCXsKCQlOb2RlIGN1cnJlbnQgPSBoZWFkOwoJCXdoaWxlKCBjdXJyZW50ICE9IG51bGwgKQoJCXsKCQkJCgkJCWlmKCBjdXJyZW50LmxlZnQgIT0gbnVsbCAmJiBjdXJyZW50LmxlZnQudmlzaXRlZCA9PSBmYWxzZSkKCQkJewkKCQkJCXN0YWNrLnB1c2goIGN1cnJlbnQgKTsKCQkJCWN1cnJlbnQgPSBjdXJyZW50LmxlZnQ7CgkJCQljb250aW51ZTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCXZpc2l0KGN1cnJlbnQpOwoJCQkJY3VycmVudC52aXNpdGVkID0gdHJ1ZTsKCQkJfQoJCQkKCQkJaWYoIGN1cnJlbnQucmlnaHQgIT0gbnVsbCApIAoJCQl7CgkJCQljdXJyZW50ID0gY3VycmVudC5yaWdodDsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCWlmKCAhIHN0YWNrLmVtcHR5KCkgKQoJCQkJewoJCQkJCWN1cnJlbnQgPSAoTm9kZSkgc3RhY2sucG9wKCk7CQoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCWN1cnJlbnQgPSBudWxsOwoJCQkJfQoJCQkJCgkJCX0KCQkJCgkJfQoJfQoJCglzdGF0aWMgdm9pZCB2aXNpdChOb2RlIGN1cnJlbnQpCgl7CgkJU3lzdGVtLm91dC5wcmludGxuKGN1cnJlbnQudmFsdWUrIlxuIik7Cgl9Cn0KCmNsYXNzIE5vZGUKewoJcHVibGljIE5vZGUgbGVmdD1udWxsOwoJcHVibGljIGludCB2YWx1ZTsKCXB1YmxpYyBib29sZWFuIHZpc2l0ZWQ9ZmFsc2U7CglwdWJsaWMgTm9kZSByaWdodD1udWxsOwoJCglwdWJsaWMgTm9kZShpbnQgdmFsdWUpCgl7CgkJdGhpcy52YWx1ZSA9IHZhbHVlOwoJfQp9