Bst

  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Bst as PDF for free.

More details

  • Words: 408
  • Pages: 6
// PROGRAM FOR BINARY SEARCH TREE #include<stdio.h> #include #include<stdlib.h> typedef struct bst { int data; struct bst *left,*right; }node; void insert (node*,node*); void inorder(node *); void *search(node *,int,node **); void del(node *,int); void main() { int choice; char ans=’N’; int key; node *new,*root,*tmp,*parent; node *get_node(); root=NULL; clrscr(); printf(“\n\t PROGRAM FOR BINARY SEARCH TREE”); do { printf(“\n\t 1.create\t\n 2.search\n\t 3.delete\n\t 4.display”); printf(\n\t\t enter your choice :\t”); scanf(“%d”,&choice); switch(choice) { case 1: do { new=get_node(); printf(“\n enter the element:\t”); scanf(“%d”,&new->data); if(root==NULL) root=new; else insert(root,new); printf(“\n do you want to enter more elements?(y/n)”); ans=getch(); }while(ans==’Y’); break;

case 2: printf(“\n enter the element which you want to search:\t”); scanf(“%d”,&key); tmp=search(root,key,&parent); printf(“\n parent of node %d is %d”, tmp->data,parent->data); break; case 3: printf(“enter the element you wish to delete:\t); scanf(“%d”,&key); del(root,key); break; case 4: if (root==NULL) printf(“ tree is not created”); else { printf(“\n the tree is:”); inorder(root); } break; } }while(choice!=5); } node *get_node() { node *temp; temp=(node *)malloc(sizeof(node)); temp->left=NULL; temp->right=NULL; return temp; } void insert(node *root,node *new) { if(new->datadata) { if(root->left==NULL) root->left=new; else insert(root->left,new); } if(new->data>root->data) { if(root->right== NULL) root->right=new; else insert(root->right,new);

} } node *search(node *root,int key,node **parent) { node *temp; temp=root; while(temp!=NULL) { if(temp->data==key) { printf(“\n the %d element is present”, temp->data); return temp; } *parent =temp; if(temp->data>key) temp=temp->left; else temp=temp->right; } return NULL; } void del(node *root,int key) { node *temp,*parent,*temp_succ; temp=search(root,key,&parent); if(temp->left!=NULL&&temp->right!=NULL) { parent=temp; temp_succ=temp->right; while(temp_succ->left!=NULL) { parent=temp_succ; temp_succ=temp_succ->left; } temp->data=temp_succ->data; parent->left=NULL; printf(“now deleted it !!!”); return; } if(temp->left=NULL && temp->right==NULL) { if(parent->left==temp) parent->left=temp->left; else parent->right=temp->left; temp=NULL;

free(temp); printf(“now deleted it!!!!”); return; } if(temp->left==NULL&&temp->right!=NULL) { if(parent->left==temp) parent->left=temp->right; else parent->right=temp->right; temp=NULL; free(temp); printf(“now deleted it!!!!”); return; } if(temp->left==NULL &&temp->firth==NULL) { if(parent->left==temp) parent->left=NULL; else parent->right=NULL; printf(“now deleted!!”); return; } } void inorder(node *temp) { if(temp!=NULL) { inorder(temp->left); printf(“\n%d”,temp->data); inorder(temp->right); } }

Output: BINARY SEARCH TREE

1.create 2.search 3.delete 4.display enter your choice:1 enter the element:11 do you want to enter more elements?(y/n):y enter the element:22 do you want to enter more elements?(y/n):y enter the element:33 do you want to enter more elements?(y/n):y enter the element:44 do you want to enter more elements?(y/n):y 1.create 2.search 3.delete 4.display enter your choice:2 enter the element which you want to search:33 the 33 element is present parent of node 33 is 22 1.create 2.search 3.delete 4.display enter your choice:3

enter the element you wish to delete:22 the 22 element is present now deleted!!! 1.create 2.search 3.delete 4.display enter your choice:4 the tree is: 11 33 44 1.create 2.search 3.delete 4.display enter your choice:

Related Documents

Bst
May 2020 40
Bst
November 2019 48
Bst
November 2019 48
Bst Rom.docx
June 2020 34
Bst Interna.pdf
June 2020 27
Bst Mifta.docx
November 2019 24