import java.util.Stack;
class Node implements Comparable<Node> {
public Node left;
public int data;
public Node right;
public Node(int val)
{
this.data=val;
}
@Override
public int compareTo(Node that) {
return this.data - that.data ;
}
@Override
return this.data + "";
}
}
/**
* Iterative Inorder Traversal Using Stack
* @author PRATEEK
*
*/
class IterativeInorder {
public static void main
(String[] args
) { Node root = new Node(12);
root.left = new Node(8);
root.left.left = new Node(6);
root.left.right = new Node(10);
root.right = new Node(16);
root.right.left = new Node(14);
root.right.right = new Node(20);
IterativeInorder obj = new IterativeInorder();
obj.iterativeInorder(root);
}
/**
* Iterative Inorder Traversal using Stack
* @param node
*/
public void iterativeInorder(Node node)
{
Stack<Node> stack = new Stack<Node>();
for (;;)
{
if (node != null)
{
stack.push(node);
node = node.left;
}
else
{
if (!stack.isEmpty())
{
node = stack.pop();
System.
out.
print(node
+ "\t"); node = node.right;
}
else
break;
}
}
}
}
aW1wb3J0IGphdmEudXRpbC5TdGFjazsKCmNsYXNzIE5vZGUgaW1wbGVtZW50cyBDb21wYXJhYmxlPE5vZGU+IHsKCXB1YmxpYyBOb2RlIGxlZnQ7CglwdWJsaWMgaW50IGRhdGE7CglwdWJsaWMgTm9kZSByaWdodDsKCglwdWJsaWMgTm9kZShpbnQgdmFsKQoJewoJCXRoaXMuZGF0YT12YWw7Cgl9CgoJQE92ZXJyaWRlCglwdWJsaWMgaW50IGNvbXBhcmVUbyhOb2RlIHRoYXQpIHsKCQlyZXR1cm4gdGhpcy5kYXRhIC0gdGhhdC5kYXRhIDsKCX0KCglAT3ZlcnJpZGUKCXB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKXsKCQlyZXR1cm4gdGhpcy5kYXRhICsgIiI7Cgl9Cn0KLyoqCiAqIEl0ZXJhdGl2ZSBJbm9yZGVyIFRyYXZlcnNhbCBVc2luZyBTdGFjawogKiBAYXV0aG9yIFBSQVRFRUsKICoKICovCmNsYXNzIEl0ZXJhdGl2ZUlub3JkZXIgewoKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKCQlOb2RlIHJvb3QgPSBuZXcgTm9kZSgxMik7CgkJcm9vdC5sZWZ0ID0gbmV3IE5vZGUoOCk7CgkJcm9vdC5sZWZ0LmxlZnQgPSBuZXcgTm9kZSg2KTsKCQlyb290LmxlZnQucmlnaHQgPSBuZXcgTm9kZSgxMCk7CgoJCXJvb3QucmlnaHQgPSBuZXcgTm9kZSgxNik7CgkJcm9vdC5yaWdodC5sZWZ0ID0gbmV3IE5vZGUoMTQpOwoJCXJvb3QucmlnaHQucmlnaHQgPSBuZXcgTm9kZSgyMCk7CgoJCUl0ZXJhdGl2ZUlub3JkZXIgb2JqID0gbmV3IEl0ZXJhdGl2ZUlub3JkZXIoKTsKCQlvYmouaXRlcmF0aXZlSW5vcmRlcihyb290KTsKCX0KCgkvKioKCSAqIEl0ZXJhdGl2ZSBJbm9yZGVyIFRyYXZlcnNhbCB1c2luZyBTdGFjawoJICogQHBhcmFtIG5vZGUKCSAqLwoJcHVibGljIHZvaWQgaXRlcmF0aXZlSW5vcmRlcihOb2RlIG5vZGUpIAoJewoJCVN0YWNrPE5vZGU+IHN0YWNrID0gbmV3IFN0YWNrPE5vZGU+KCk7CgkJZm9yICg7OykgCgkJewoJCQlpZiAobm9kZSAhPSBudWxsKSAKCQkJewoJCQkJc3RhY2sucHVzaChub2RlKTsKCQkJCW5vZGUgPSBub2RlLmxlZnQ7CgkJCX0KCQkJZWxzZSAKCQkJewoJCQkJaWYgKCFzdGFjay5pc0VtcHR5KCkpIAoJCQkJewoJCQkJCW5vZGUgPSBzdGFjay5wb3AoKTsKCQkJCQlTeXN0ZW0ub3V0LnByaW50KG5vZGUgKyAiXHQiKTsKCQkJCQlub2RlID0gbm9kZS5yaWdodDsKCQkJCX0KCQkJCWVsc2UKCQkJCQlicmVhazsKCQkJfQoJCX0KCX0KfQo=