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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 | /* * 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' ); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | 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 |