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:

Java List UnsupportedOperationException
Mix plain text and HTML content in a mail
4 tính chất của lập trình hướng đối tượng trong Java
Java Program to Perform Inorder Recursive Traversal of a Given Binary Tree
Java Perform to a 2D FFT Inplace Given a Complex 2D Array
Java Program to do a Breadth First Search/Traversal on a graph non-recursively
Java Program to Implement Sparse Matrix
Guide to Dynamic Tests in Junit 5
Arrays.asList vs new ArrayList(Arrays.asList())
Java Program to Create a Balanced Binary Tree of the Incoming Data
Prevent Brute Force Authentication Attempts with Spring Security
Spring Boot - Bootstrapping
Java Program to Implement LinkedHashMap API
Java Program to Create a Random Graph Using Random Edge Generation
Java Program to Implement Ternary Tree
Filtering and Transforming Collections in Guava
StringBuilder vs StringBuffer in Java
Removing all duplicates from a List in Java
Java Program to Print the Kind of Rotation the AVL Tree is Undergoing
The Registration Process With Spring Security
Java Program to Perform LU Decomposition of any Matrix
HttpClient Connection Management
Java Program to Implement Heap
Map Serialization and Deserialization with Jackson
Convert XML to JSON Using Jackson
Java Program to Implement Circular Doubly Linked List
The Java 8 Stream API Tutorial
Java Program to Implement the Hill Cypher
Java Program to Implement Hash Tables
Introduction to Spring Security Expressions
Get and Post Lists of Objects with RestTemplate
Tổng quan về ngôn ngữ lập trình java