0% found this document useful (0 votes)
15 views

Expt 8 DSA Lab (ECS) Implement Binary Search Tree Using Linked List

Uploaded by

mrrehanshaikh9
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
15 views

Expt 8 DSA Lab (ECS) Implement Binary Search Tree Using Linked List

Uploaded by

mrrehanshaikh9
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 10

Rizvi College of Engineering, Mumbai

_____________________________________________________________________________________

RIZVI EDUCATION SOCIETY’S

Rizvi College of Engineering


∎Approved by AICTE ∎Recognized by DTE ∎Affiliated to University of Mumbai
∎Accredited B+ by NAAC
New Rizvi Educational Complex, Off Carter Rd, Bandra West, Mumbai-400050

Experiment No. 8
Title Implement Binary Search Tree ADT using Linked List

Name
Year/Branch
Roll No.
UIN
Rizvi College of Engineering, Mumbai
_____________________________________________________________________________________

Aim: To Implement Binary Search Tree ADT using Linked List

Theory:
In a binary tree, every node can have a maximum of two children but there is no need to maintain the order
of nodes basing on their values. In a binary tree, the elements are arranged in the order they arrive at the tree
from top to bottom and left to right.
Binary Search Tree is a binary tree in which every node contains only smaller values in its left subtree and
only larger values in its right subtree.

To enhance the performance of binary tree, we use a special type of binary tree known as Binary Search
Tree. Binary search tree mainly focuses on the search operation in a binary tree. Binary search tree can be
defined as follows...
Binary Search Tree is a binary tree in which every node contains only smaller values in its left subtree and
only larger values in its right subtree.

In a binary search tree, all the nodes in the left subtree of any node contains smaller values and all the nodes
in the right subtree of any node contains larger values as shown in the following figure...

Example
The following tree is a Binary Search Tree. In this tree, left subtree of every node contains nodes with
smaller values and right subtree of every node contains larger values.
Rizvi College of Engineering, Mumbai
_____________________________________________________________________________________

Every binary search tree is a binary tree but every binary tree need not to be binary search tree.

ALGORITHMS:

Operations on a Binary Search Tree


The following operations are performed on a binary search tree...
1. Search
2. Insertion
3. Deletion

Search Operation in BST


In a binary search tree, the search operation is performed with O(log n) time complexity. The search
operation is performed as follows...
● Step 1 - Read the search element from the user.
● Step 2 - Compare the search element with the value of root node in the tree.
● Step 3 - If both are matched, then display "Given node is found!!!" and terminate the function
● Step 4 - If both are not matched, then check whether search element is smaller or larger than that
node value.
● Step 5 - If search element is smaller, then continue the search process in left subtree.
● Step 6- If search element is larger, then continue the search process in right subtree.
● Step 7 - Repeat the same until we find the exact element or until the search element is compared with
the leaf node
● Step 8 - If we reach to the node having the value equal to the search value then display "Element is
found" and terminate the function.
Rizvi College of Engineering, Mumbai
_____________________________________________________________________________________

● Step 9 - If we reach to the leaf node and if it is also not matched with the search element, then
display "Element is not found" and terminate the function.

Insertion Operation in BST


In a binary search tree, the insertion operation is performed with O(log n) time complexity. In binary search
tree, new node is always inserted as a leaf node. The insertion operation is performed as follows...
● Step 1 - Create a newNode with given value and set its left and right to NULL.
● Step 2 - Check whether tree is Empty.
● Step 3 - If the tree is Empty, then set root to newNode.
● Step 4 - If the tree is Not Empty, then check whether the value of newNode is smaller or larger
than the node (here it is root node).
● Step 5 - If newNode is smaller than or equal to the node then move to its left child. If newNode is
larger than the node then move to its right child.
● Step 6- Repeat the above steps until we reach to the leaf node (i.e., reaches to NULL).
● Step 7 - After reaching the leaf node, insert the newNode as left child if the newNode is smaller or
equal to that leaf node or else insert it as right child.

Deletion Operation in BST


In a binary search tree, the deletion operation is performed with O(log n) time complexity. Deleting a node
from Binary search tree includes following three cases...
● Case 1: Deleting a Leaf node (A node with no children)
● Case 2: Deleting a node with one child
● Case 3: Deleting a node with two children

Case 1: Deleting a leaf node


We use the following steps to delete a leaf node from BST...
● Step 1 - Find the node to be deleted using search operation
● Step 2 - Delete the node using free function (If it is a leaf) and terminate the function.

Case 2: Deleting a node with one child


We use the following steps to delete a node with one child from BST...
● Step 1 - Find the node to be deleted using search operation
● Step 2 - If it has only one child then create a link between its parent node and child node.
● Step 3 - Delete the node using free function and terminate the function.

Case 3: Deleting a node with two children


We use the following steps to delete a node with two children from BST...
● Step 1 - Find the node to be deleted using search operation
● Step 2 - If it has two children, then find the largest node in its left subtree (OR) the smallest node in
its right subtree.
● Step 3 - Swap both deleting node and node which is found in the above step.
Rizvi College of Engineering, Mumbai
_____________________________________________________________________________________

● Step 4 - Then check whether deleting node came to case 1 or case 2 or else goto step 2
● Step 5 - If it comes to case 1, then delete using case 1 logic.
● Step 6- If it comes to case 2, then delete using case 2 logic.
● Step 7 - Repeat the same process until the node is deleted from the tree.

Example
Construct a Binary Search Tree by inserting the following sequence of numbers...
10,12,5,4,20,8,7,15 and 13
Above elements are inserted into a Binary Search Tree as follows...
Rizvi College of Engineering, Mumbai
_____________________________________________________________________________________
Rizvi College of Engineering, Mumbai
_____________________________________________________________________________________

Program: (This is just sample prog for ref, students should develop their own prog.)
# include <stdio.h>

# include <conio.h>

# include <stdlib.h>

typedef struct BST {

int data;

struct BST *left, *right;

} node;

node *root = NULL;

node* Insert(node* root,int data) {

if(root == NULL){

root = (node*)malloc(sizeof(node));

root->data = data;

root->left = root->right = NULL;

else if(data <= root->data)

root->left = Insert(root->left,data);

else

root->right = Insert(root->right,data);

return root;

void inorder(node *temp){

if (temp != NULL){

inorder(temp->left);

printf("%d ", temp->data);

inorder(temp->right);

}
Rizvi College of Engineering, Mumbai
_____________________________________________________________________________________

void preorder(node *temp){

if (temp != NULL){

printf("%d ", temp->data);

preorder(temp->left);

preorder(temp->right);

void postorder(node *temp){

if (temp != NULL){

postorder(temp->left);

postorder(temp->right);

printf("%d ", temp->data);

void main() {

int choice,num;

while(1) {

printf("\n --------MENU------------\n");

printf("1\tInsert\n");

printf("2\tPreorder Display\n");

printf("3\tInorder Display \n");

printf("4\tPostorder Display\n");

printf("5\tExit\n");

printf("Enter your choice:");


Rizvi College of Engineering, Mumbai
_____________________________________________________________________________________

scanf("%d",&choice);

switch(choice){

case 1:

printf("Enter your number:");

scanf("%d",&num);

root=Insert(root,num);

break;;

case 2:

printf("Pre-Order Display\n");

preorder(root);

break;;

case 3:

printf("In-Order Display\n");

inorder(root);

break;;

case 4:

printf("Post-Order Display\n");

postorder(root);

break;;

case 5:

exit(0);

default:

printf("\n ----Wrong Option----\n");

break;

}
Rizvi College of Engineering, Mumbai
_____________________________________________________________________________________

Output: (Students should put screenshot of output here)

Conclusion: In conclusion, implementing a Binary Search Tree ADT using a linked list
allows for efficient insertion, deletion, and search operations, maintaining a dynamic
structure that adapts to varying data sizes. This approach exemplifies the advantages of
linked data structures in managing hierarchical data effectively.

You might also like