\begin{algorithm}
\caption{Binary Tree Traversal Nonrecursive with Constant Space}
\begin{algorithmic}
\REQUIRE a binary tree $T$
\ENSURE print all keys appearing in $T$
\STATE $prev = NIL$
\STATE $x = T.root$
\WHILE{$x \ne NIL$}
\IF{$prev == x.p$} \COMMENT{ $T.root.p$ is $NIL$}
\PRINT $x.key$
\STATE $prev = x$
\IF{$x.left \ne NIL$}
\STATE $x = x.left$
\ELSEIF{$x.right \ne NIL$}
\STATE $x = x.right$
\ELSE
\STATE $x = x.p$
\ENDIF
\ELSEIF{$prev == x.left$ \AND $x.right \ne NIL$}
\STATE $prev = x$
\STATE $x = x.right$
\ELSE
\STATE $prev = x$
\STATE $x = x.p$
\ENDIF
\ENDWHILE
\end{algorithmic}
\end{algorithm}