**Objective: **Given a binary tree, write a non recursive or iterative algorithm for Inorder traversal.

**Example:**

Earlier we have seen “**What is Inorder traversal and recursive algorithm for it**“, In this article we will solve it with iterative/Non Recursive manner.

Since we are not using recursion, we will use the **Stack** to store the traversal, we need to remember that inorder traversal is, first traverse the left node then root followed by the right node.

**Pseudo Code:**

- Create a Stack.
- Push the root into the stack and set the root = root.left continue till it hits the NULL.
- If root is null and Stack is empty Then
- return, we are done.

- Else
- Pop the top Node from the Stack and set it as, root = popped_Node.
- print the root and go right, root = root.right.
- Go to step 2.

- End If

See the animated image below and code for more understanding.

**Complete Code:**

Output:

4 2 5 1 3 4 2 5 1 3

In the topmost picture, the in-order traversal should be “4 2 5 1 6 3 7”.

In the Java code, the true condition can be replaced by “root != null || !nodes.isEmpty()”.