Java Program to Perform Inorder Non-Recursive Traversal of a Given Binary Tree

This is a java program to construct a binary tree and perform in-order traversal of the constructed binary tree.
Nodes visited are in the order:
visit Left node
visit Root node
visit Right node

Here is the source code of the Java Program to Perform Inorder Non-Recursive Traversal of a Given Binary Tree. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.

//This is a java program to implement non recursive in order traversal of Binary Search Tree
import java.util.Scanner;
import java.util.Stack;
 
class BinarySearchTreeNode
{
    BinarySearchTreeNode left, right;
    int                  data;
 
    public BinarySearchTreeNode()
    {
        left = null;
        right = null;
        data = 0;
    }
 
    public BinarySearchTreeNode(int n)
    {
        left = null;
        right = null;
        data = n;
    }
 
    public void setLeft(BinarySearchTreeNode n)
    {
        left = n;
    }
 
    public void setRight(BinarySearchTreeNode n)
    {
        right = n;
    }
 
    public BinarySearchTreeNode getLeft()
    {
        return left;
    }
 
    public BinarySearchTreeNode getRight()
    {
        return right;
    }
 
    public void setData(int d)
    {
        data = d;
    }
 
    public int getData()
    {
        return data;
    }
}
 
class BinarySearchTreeOperations
{
    private BinarySearchTreeNodes root;
 
    public BinarySearchTreeOperations()
    {
        root = null;
    }
 
    public boolean isEmpty()
    {
        return root == null;
    }
 
    public void insert(int data)
    {
        root = insert(root, data);
    }
 
    private BinarySearchTreeNodes insert(BinarySearchTreeNodes node, int data)
    {
        if (node == null)
            node = new BinarySearchTreeNodes(data);
        else
        {
            if (data <= node.getData())
                node.left = insert(node.left, data);
            else
                node.right = insert(node.right, data);
        }
        return node;
    }
 
    public void inorder()
    {
        inorder(root);
    }
 
    private void inorder(BinarySearchTreeNodes r)
    {
        if (r == null)
            return;
 
        Stack<BinarySearchTreeNodes> stack = new Stack<BinarySearchTreeNodes>();
 
        while (!stack.isEmpty() || r != null)
        {
            if (r != null)
            {
                stack.push(r);
                r = r.left;
            } else
            {
                r = stack.pop();
                System.out.print(r.data + " ");
                r = r.right;
            }
        }
    }
}
 
public class Inorder_NonRecursive_BST
{
    public static void main(String[] args)
    {
        Scanner scan = new Scanner(System.in);
        BinarySearchTreeOperations bst = new BinarySearchTreeOperations();
        System.out.println("Enter the first 10 elements of the tree\n");
        int N = 10;
        for (int i = 0; i < N; i++)
            bst.insert(scan.nextInt());
 
        System.out.print("\nIn order   : ");
        bst.inorder();
 
        scan.close();
    }
}

Output:

$ javac Inorder_NonRecursive_BST.java
$ java Inorder_NonRecursive_BST
 
Enter the first 10 elements of the tree
 
12 4 10 13 15 46 78 98 45 12
 
In order   : 4 10 12 12 13 15 45 46 78 98

Related posts:

Creating a Web Application with Spring 5
Java Program to Construct K-D Tree for 2 Dimensional Data
Lập trình đa luồng với Callable và Future trong Java
Java Program to Compute Discrete Fourier Transform Using the Fast Fourier Transform Approach
Java Program to Find Minimum Number of Edges to Cut to make the Graph Disconnected
Java Program to Generate Random Numbers Using Middle Square Method
Java Program to Implement Selection Sort
Spring Security 5 for Reactive Applications
Các kiểu dữ liệu trong java
Java Stream Filter with Lambda Expression
Tạo ứng dụng Java RESTful Client không sử dụng 3rd party libraries
Java Program to Implement Leftist Heap
Java Program to Implement Fisher-Yates Algorithm for Array Shuffling
Java equals() and hashCode() Contracts
Java Program to Implement Fermat Factorization Algorithm
The XOR Operator in Java
REST Web service: Tạo ứng dụng Java RESTful Client với Jersey Client 2.x
New Features in Java 14
A Guide to Java 9 Modularity
Java Program to Describe the Representation of Graph using Adjacency Matrix
Java Program to Construct an Expression Tree for an Prefix Expression
Java Program to Generate All Possible Subsets with Exactly k Elements in Each Subset
Netflix Archaius with Various Database Configurations
Returning Custom Status Codes from Spring Controllers
Java Program to Find the Shortest Path from Source Vertex to All Other Vertices in Linear Time
HashMap trong Java hoạt động như thế nào?
A Quick Guide to Using Keycloak with Spring Boot
Java Program to Check if a Given Binary Tree is an AVL Tree or Not
The Registration API becomes RESTful
Java Program to Perform Partial Key Search in a K-D Tree
Shuffling Collections In Java
Encode/Decode to/from Base64