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

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

Here is the source code of the Java Program to Perform Preorder 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 pre-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 preorder()
    {
        preorder(root);
    }
 
    private void preorder(BinarySearchTreeNodes r)
    {
        Stack<BinarySearchTreeNodes> s = new Stack<BinarySearchTreeNodes>();
        s.push(r);
        while (!s.empty())
        {
            r = s.pop();
            System.out.print(r.data + " ");
            if (r.right != null)
                s.push(r.right);
            if (r.left != null)
                s.push(r.left);
        }
    }
}
 
public class Preorder_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("\nPre order  : ");
        bst.preorder();
 
        scan.close();
    }
}

Output:

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

Related posts:

Java Program to Implement Bubble Sort
Java Program to Implement Gift Wrapping Algorithm in Two Dimensions
Cơ chế Upcasting và Downcasting trong java
Java Program to Generate a Graph for a Given Fixed Degree Sequence
Java Program to Implement Heap Sort Using Library Functions
Constructor Injection in Spring with Lombok
Java Program to Remove the Edges in a Given Cyclic Graph such that its Linear Extension can be Found
Spring Security with Maven
Java Program to Use Above Below Primitive to Test Whether Two Lines Intersect
Hướng dẫn Java Design Pattern – Visitor
Spring Boot - Internationalization
Giới thiệu Json Web Token (JWT)
Tránh lỗi NullPointerException trong Java như thế nào?
Guide to ThreadLocalRandom in Java
Java Program to Implement Knight’s Tour Problem
Java Program to Implement Sparse Array
Java Program to Implement Wagner and Fisher Algorithm for online String Matching
Spring Boot - Exception Handling
Java Program to Implement Segment Tree
Java Program to Implement Randomized Binary Search Tree
Giới thiệu về Stream API trong Java 8
Java Program to Perform Finite State Automaton based Search
Model, ModelMap, and ModelAndView in Spring MVC
Lớp LinkedHashMap trong Java
Validations for Enum Types
Zipping Collections in Java
Handle EML file with JavaMail
DistinctBy in the Java Stream API
Converting a List to String in Java
Adding Parameters to HttpClient Requests
Feign – Tạo ứng dụng Java RESTful Client
Java Program to Perform Encoding of a Message Using Matrix Multiplication