Check out example codes for "iterative inorder traversal". It will help you in understanding the concepts better.

Code Example 1

``````// C program for different tree traversals
#include <iostream>
using namespace std;

/* A binary tree node has data, pointer to left child
and a pointer to right child */
struct Node
{
int data;
struct Node* left, *right;
Node(int data)
{
this->data = data;
left = right = NULL;
}
};

/* Given a binary tree, print its nodes according to the
"bottom-up" postorder traversal. */
void printPostorder(struct Node* node)
{
if (node == NULL)
return;

// first recur on left subtree
printPostorder(node->left);

// then recur on right subtree
printPostorder(node->right);

// now deal with the node
cout << node->data << " ";
}

/* Given a binary tree, print its nodes in inorder*/
void printInorder(struct Node* node)
{
if (node == NULL)
return;

/* first recur on left child */
printInorder(node->left);

/* then print the data of node */
cout << node->data << " ";

/* now recur on right child */
printInorder(node->right);
}

/* Given a binary tree, print its nodes in preorder*/
void printPreorder(struct Node* node)
{
if (node == NULL)
return;

/* first print data of node */
cout << node->data << " ";

/* then recur on left sutree */
printPreorder(node->left);

/* now recur on right subtree */
printPreorder(node->right);
}

/* Driver program to test above functions*/
int main()
{
struct Node *root = new Node(1);
root->left             = new Node(2);
root->right         = new Node(3);
root->left->left     = new Node(4);
root->left->right = new Node(5);

cout << "\nPreorder traversal of binary tree is \n";
printPreorder(root);

cout << "\nInorder traversal of binary tree is \n";
printInorder(root);

cout << "\nPostorder traversal of binary tree is \n";
printPostorder(root);

return 0;
}``````

Code Example 2

``````// C++ program to print inorder traversal
// using stack.
#include<bits/stdc++.h>
using namespace std;

/* A binary tree Node has data, pointer to left child
and a pointer to right child */
struct Node
{
int data;
struct Node* left;
struct Node* right;
Node (int data)
{
this->data = data;
left = right = NULL;
}
};

/* Iterative function for inorder tree
traversal */
void inOrder(struct Node *root)
{
stack<Node *> s;
Node *curr = root;

while (curr != NULL || s.empty() == false)
{
/* Reach the left most Node of the
curr Node */
while (curr !=  NULL)
{
/* place pointer to a tree node on
the stack before traversing
the node's left subtree */
s.push(curr);
curr = curr->left;
}

/* Current must be NULL at this point */
curr = s.top();
s.pop();

cout << curr->data << " ";

/* we have visited the node and its
left subtree.  Now, it's right
subtree's turn */
curr = curr->right;

} /* end of while */
}

/* Driver program to test above functions*/
int main()
{

/* Constructed binary tree is
1
/   \
2      3
/  \
4     5
*/
struct Node *root = new Node(1);
root->left        = new Node(2);
root->right       = new Node(3);
root->left->left  = new Node(4);
root->left->right = new Node(5);

inOrder(root);
return 0;
}``````

Learn ReactJs, React Native from akashmittal.com