89% found this document useful (19 votes)
72K views

C Program For Binary Search Tree

The document discusses a binary search tree implementation in C. It includes functions to insert, delete, find, find minimum/maximum elements, and display the tree. The main function provides a menu to test these functions. Nodes contain an element value and left/right child pointers. Functions recursively traverse the tree to add/remove/search for nodes based on element values. Sample output shows testing the tree by adding elements 10, 20, 5 then finding the minimum, displaying the tree, and exiting.

Uploaded by

Saiyasodharan
Copyright
© Public Domain
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
89% found this document useful (19 votes)
72K views

C Program For Binary Search Tree

The document discusses a binary search tree implementation in C. It includes functions to insert, delete, find, find minimum/maximum elements, and display the tree. The main function provides a menu to test these functions. Nodes contain an element value and left/right child pointers. Functions recursively traverse the tree to add/remove/search for nodes based on element values. Sample output shows testing the tree by adding elements 10, 20, 5 then finding the minimum, displaying the tree, and exiting.

Uploaded by

Saiyasodharan
Copyright
© Public Domain
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 6

BINARY SEARCH TREE

#include<stdio.h> #include<stdlib.h> #include<conio.h> struct searchtree { int element; struct searchtree *left,*right; }*root; typedef struct searchtree *node; typedef int ElementType; node insert(ElementType, node); node delet(ElementType, node); void makeempty(); node findmin(node); node findmax(node); node find(ElementType, node); void display(node, int); void main() { int ch; ElementType a; node temp; makeempty(); while(1) { printf("\n1. Insert\n2. Delete\n3. Find\n4. Find min\n5. Find max\n6. Display\n7. Exit\nEnter Your Choice : "); scanf("%d",&ch); switch(ch) { case 1: printf("Enter an element : "); scanf("%d", &a); root = insert(a, root); break; case 2: printf("\nEnter the element to delete : "); scanf("%d",&a); root = delet(a, root); break; case 3: printf("\nEnter the element to search : "); scanf("%d",&a); temp = find(a, root);

if (temp != NULL) printf("Element found"); else printf("Element not found"); break; case 4: temp = findmin(root); if(temp==NULL) printf("\nEmpty tree"); else printf("\nMinimum element : %d", temp->element); break; case 5: temp = findmax(root); if(temp==NULL) printf("\nEmpty tree"); else printf("\nMaximum element : %d", temp->element); break; case 6: if(root==NULL) printf("\nEmpty tree"); else display(root, 1); break; case 7: exit(0); default: printf("Invalid Choice"); } } } node insert(ElementType x,node t) { if(t==NULL) { t = (node)malloc(sizeof(node)); t->element = x; t->left = t->right = NULL; } else { if(x < t->element) t->left = insert(x, t->left); else if(x > t->element) t->right = insert(x, t->right); } return t; }

node delet(ElementType x,node t) { node temp; if(t == NULL) printf("\nElement not found"); else { if(x < t->element) t->left = delet(x, t->left); else if(x > t->element) t->right = delet(x, t->right); else { if(t->left && t->right) { temp = findmin(t->right); t->element = temp->element; t->right = delet(t->element,t->right); } else if(t->left == NULL) { temp = t; t=t->right; free (temp); } else { temp = t; t=t->left; free (temp); } } } return t; } void makeempty() { root = NULL; }

node findmin(node temp) { if(temp == NULL || temp->left == NULL) return temp; return findmin(temp->left); }

node findmax(node temp) {

if(temp==NULL || temp->right==NULL) return temp; return findmax(temp->right); }

node find(ElementType x, node t) { if(t==NULL) return NULL; if(x<t->element) return find(x,t->left); if(x>t->element) return find(x,t->right); return t; }

void display(node t,int level) { int i; if(t) { display(t->right, level+1); printf(\n); for(i=0;i<level;i++) printf(" "); printf("%d", t->element); display(t->left, level+1); } }

Sample Output: 1. Insert 2. Delete 3. Find 4. Find Min 5. Find Max 6. Display 7. Exit Enter your Choice : 1 Enter an element : 10 1. Insert 2. Delete 3. Find 4. Find Min 5. Find Max 6. Display 7. Exit Enter your Choice : 1

Enter an element : 20

1. Insert 2. Delete 3. Find 4. Find Min 5. Find Max 6. Display 7. Exit Enter your Choice : 1 Enter an element : 5

1. Insert 2. Delete 3. Find 4. Find Min 5. Find Max 6. Display 7. Exit Enter your Choice : 4 The smallest Number is 5 1. Insert 2. Delete 3. Find 4. Find Min 5. Find Max 6. Display 7. Exit Enter your Choice : 3 Enter an element : 100 Element not Found 1. Insert 2. Delete 3. Find 4. Find Min 5. Find Max 6. Display 7. Exit Enter your Choice : 2 Enter an element : 20 1. Insert 2. Delete 3. Find 4. Find Min 5. Find Max

6. Display 7. Exit Enter your Choice : 6 20 10 1. Insert 2. Delete 3. Find 4. Find Min 5. Find Max 6. Display 7. Exit Enter your Choice : 7
For more programs visit http://www.gethugames.in/blog

You might also like