195 lines
4.5 KiB
Java
195 lines
4.5 KiB
Java
/*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.*/
|
||
|
||
/*
|
||
* 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');
|
||
}
|
||
}
|
||
|
||
|
||
/*
|
||
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 |