```
public static void nonRecursiveInorder(Node node)
{
Stack<Node> st=new Stack();
st.push(node);
Node temp;
while(!st.isEmpty())
{
temp=st.peek();
if(temp.left!=null && temp.left.visited==false)
st.push(temp.left);
else
{
if(temp.left==null && temp.right!=null && temp.right.visited==false)
{
System.out.print(" "+temp.value);
temp.visited=true;
st.pop();
st.push(temp.right);
}
else
{
if(temp.left!=null && temp.left.visited==true && temp.right!=null && temp.right.visited==false)
{
System.out.print(" "+temp.value);
temp.visited=true;
st.pop();
st.push(temp.right);
}
else
{
System.out.print(" "+temp.value);
temp.visited=true;
st.pop();
}
}
}
}
}
```