Java Program to Implement a Binary Search Tree using Linked Lists

This is a Java Program to implement Binary Search Tree using Linked Lists. A binary search tree (BST), sometimes also called an ordered or sorted binary tree, is a node-based binary tree data structure which has the following properties:
i) The left subtree of a node contains only nodes with keys less than the node’s key.
ii) The right subtree of a node contains only nodes with keys greater than the node’s key.
iii) The left and right subtree must each also be a binary search tree.
iv) There must be no duplicate nodes.
Here BST is implemented using Linked List.

Here is the source code of the Java program to implement Binary Search Tree using Linked Lists. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.

/*
 *  Java Program to Implement a Binary Search Tree using Linked Lists
 */
 
 import java.util.Scanner;    
 
 /* Class Node */
 class Node        
 {
     Node left, right;
     int data;
 
     /* Constructor */
     public Node(int n)
     {
         left = null;
         right = null;
         data = n;
     }         
 }
 
 /* Class BST */
 class BST
 {
     private Node root;
 
     /* Constructor */
     public BST()
     {
         root = null;
     }
     /* Functions to insert data */
     public void insert(int data)
     {
         root = insert(root, data);
     }
     /* Function to insert data recursively */
     private Node insert(Node node, int data)
     {
         if (node == null)
             node = new Node(data);
         else
         {
             if (data <= node.data)
                 node.left = insert(node.left, data);
             else
                 node.right = insert(node.right, data);
         }
         return node;
     }
     /* Function for inorder traversal */
     public void inorder()
     {
         inorder(root);
     }
     private void inorder(Node r)
     {
         if (r != null)
         {
             inorder(r.left);
             System.out.print(r.data +" ");
             inorder(r.right);
         }
     }
     /* Function for preorder traversal */
     public void preorder()
     {
         preorder(root);
     }
     private void preorder(Node r)
     {
         if (r != null)
         {
             System.out.print(r.data +" ");
             preorder(r.left);             
             preorder(r.right);
         }
     }
     /* Function for postorder traversal */
     public void postorder()
     {
         postorder(root);
     }
     private void postorder(Node r)
     {
         if (r != null)
         {
             postorder(r.left);             
             postorder(r.right);
             System.out.print(r.data +" ");
         }
     }     
 }
 
 /* Class LinkedListBST */
 public class LinkedListBST
 {
     public static void main(String[] args)
     {                 
         Scanner scan = new Scanner(System.in);
         /* Creating object of BST */
         BST bst = new BST(); 
         System.out.println("Linked List Binary Search Tree Test\n");          
         char ch;
         /*  Accept input  */
         do    
         {
             System.out.println("Enter integer element to insert");
             bst.insert( scan.nextInt() );                     
 
             /*  Display tree  */ 
             System.out.print("\nPost order : ");
             bst.postorder();
             System.out.print("\nPre order : "); 
             bst.preorder();
             System.out.print("\nIn order : ");
             bst.inorder();
 
             System.out.println("\nDo you want to continue (Type y or n) \n");
             ch = scan.next().charAt(0);                        
         } while (ch == 'Y'|| ch == 'y');                    
     }
 }
Linked List Binary Search Tree Test
 
Enter integer element to insert
45
 
Post order : 45
Pre order : 45
In order : 45
Do you want to continue (Type y or n)
 
y
Enter integer element to insert
12
 
Post order : 12 45
Pre order : 45 12
In order : 12 45
Do you want to continue (Type y or n)
 
y
Enter integer element to insert
67
 
Post order : 12 67 45
Pre order : 45 12 67
In order : 12 45 67
Do you want to continue (Type y or n)
 
y
Enter integer element to insert
23
 
Post order : 23 12 67 45
Pre order : 45 12 23 67
In order : 12 23 45 67
Do you want to continue (Type y or n)
 
y
Enter integer element to insert
96
 
Post order : 23 12 96 67 45
Pre order : 45 12 23 67 96
In order : 12 23 45 67 96
Do you want to continue (Type y or n)
 
y
Enter integer element to insert
32
 
Post order : 32 23 12 96 67 45
Pre order : 45 12 23 32 67 96
In order : 12 23 32 45 67 96
Do you want to continue (Type y or n)
 
y
Enter integer element to insert
24
 
Post order : 24 32 23 12 96 67 45
Pre order : 45 12 23 32 24 67 96
In order : 12 23 24 32 45 67 96
Do you want to continue (Type y or n)
 
n

Related posts:

String Initialization in Java
Convert a Map to an Array, List or Set in Java
Java 14 Record Keyword
Java Program to Implement Threaded Binary Tree
Simple Single Sign-On with Spring Security OAuth2
Guide to Java Instrumentation
ThreadPoolTaskExecutor corePoolSize vs. maxPoolSize
Anonymous Classes in Java
Java Program to Perform Matrix Multiplication
Intro to the Jackson ObjectMapper
Hướng dẫn Java Design Pattern – Service Locator
A Quick Guide to Spring Cloud Consul
Hướng dẫn sử dụng Java String, StringBuffer và StringBuilder
Java Program to Check if a Directed Graph is a Tree or Not Using DFS
Java Program to Check if any Graph is Possible to be Constructed for a Given Degree Sequence
Redirect to Different Pages after Login with Spring Security
Java Program to Check if a Given Binary Tree is an AVL Tree or Not
Java – Rename or Move a File
Java Program to Use the Bellman-Ford Algorithm to Find the Shortest Path
Hướng dẫn Java Design Pattern – Mediator
Java Program to Implement Slicker Algorithm that avoids Triangulation to Find Area of a Polygon
Convert Hex to ASCII in Java
Guide to java.util.concurrent.Future
An Introduction to Java.util.Hashtable Class
ETags for REST with Spring
Giới thiệu Json Web Token (JWT)
Java Program to Find Number of Spanning Trees in a Complete Bipartite Graph
Finding the Differences Between Two Lists in Java
Java Program to Implement Euler Circuit Problem
Guide to Java 8 groupingBy Collector
Tránh lỗi ConcurrentModificationException trong Java như thế nào?
Apache Commons Collections SetUtils