File Edit Search Run Conmpile Debug Pro,ject Options Window Help
DDFS\BINARYTR.C =1-[$]
include<stdio.h>
include <conio.h>
tinclude <stdlib.h>
/binars search tree
x Input : 50, 30, 20,40,?0,60,80
Let us create fol lowing BST
50
30 70
20 40 60 80 */
struct node
{
struct node *1eft, right:
int data:
struct node *root, *temp ;
1:1
F1 Help Alt-F8 Next Msg Alt-F7 Prev Msg Alt-F9 Compile F9 Make F10 Menu
E File Edit Search Run Compi le Debug Project Options Window Help
DDFS\B INARYTR.C -1-[]
struct node *root, *temp
struct node xcreate(int);
oid insert (int) ;
struct node *del(struct node *, imt);
void preorder ();
void inorder (struct node *);
uoid postorder 0:
struct node *largestnode (struct node *): ********************
struct node *Sma llestnode (struct node *) ;
int getdata();
int ma in()
int data, choice:
struct node *result:
clrscr(0:
= 40:1
F1 Help Alt-F8 Next Msg Alt-F7 Prey Msu Alt-F9 Compile F9 Make F1O Menu
E File Edit Search Run Compile Debug Pro ject Dptions WindoW Help
DDFS\BINARYTR.C -1-[$]
clrscr0:
while1)
printfC-8inary Search Tree Dperntions
printf (Cl, nsert');
printf ( 2 . Delete');
printfC3. Largest Node ):
printf t. Smllnsi Nude");
printf( 5 . RreDrdbr');
printf(%n6. Inorder");
printf ( ' .Postordexr');
printfn8. Exit");
printf 'nEnter Cho ice "):
Scanf( a " , &cho ice);
pr intf(n"):
= 57:1
F1 Help Alt-F8 Next Msg Alt-F? Prey Msg Alt F9 Comp i le F9 Make F10 Menu
EFile Edit Search Run Compile Debug Project Options Window Help
DDFS\B INARYTR.C =1=[t]
printf(Enter Cho ice
Scanf ( , &cho ice);
printf();
switch(cho ice)
{
Case 1:
data=getdata(0:
insert (data) ;
break:
Case 2:
data=getdata():
root=del(root, data) ;
break;
Case 3:
result =largestnode (root );
if (result != NULL )
{
printf ('nLargest Node : zd" , result->data):
74:1
F1 Help Alt-F8 Next Msg Alt-F Prev Msg Al
Alt-F9 Compi le F9Make F10 Menu
File Edit Search Run Comp ile Debug Project Options WindoJ Help
-[u]= DDFS\BINARYTR.C =1=[$]
Case 3:
result = largestnode(root);
if (result != NULL )
printf((Largest Node : 2", result->data);
break:
Case 4:
result =smal lestmode (root):
if (result != NULL)
{
printf Smallest Node : xa", result->data);
break;
Case 5:
preorder (root):
break;
Case 6:
90:1
F1 Help Alt-F8 Next Msg Alt-F? Prev tsg Alt-F9 Compi le F9 Make F10 Menu
Edit Search Run Comp i le Debug Project Options Window Help
-[u]: DDFS\BINARYTR.C
=1-[$]=
Case 6:
inorder (root ) ;
break:
Case ?:
postorder (root);
break:
Case 8:
exit(0);
def aul t:
printf Clnwalia Choice"):
break:
}
struct node *create (int data) //create node
110:1
F1 Help Alt-F8 Next Msg Alt-F7 Preu Msg Alt
IL F9 Compile F9 Make M0 Menu
E File Edit Search Run Compile Debug Project Üptions Window Help
DDFS\BINARYTR.C 1-[$]
struct node *Create(int data) //Create node
{
struct node *nemode= (struct node *) mal loc(s izeof (struct node) ):
newnode->data=data:
newmode->left=NULL:
nemode->r ight=NULL:
return nemode:
****************8
void isert (data)
{
struct node *mewnodecreate(data);
struct node *temp=root:
struct node *preu:
if (neunode ! =NULL)
if (root=-NULL)
{
129:1
F1 Help Alt-F8 Next Msg Alt-F? Prev MsgAlt F9 Compile F9 Make F10 Men
EFile Edit Search Run Comp i le Debug Pro,ject Options Windo Help
-[u]= DDFS\B INARYTR.C =1=[$]
if (root==NULL)
root=nemode:
printfCoda having 2lanent Las iDserted", data);
return:
else
***************
temp=root;
while(temp!=NULL)
{
prev=temp;
if (data>temp->data)
{
temp=temp->r ight:
}
else
147:1 =
Make F10 Menu
= File Edit Search Run Comp i le Debug Pro,ject Optios Window Help
-[u]= DDFS\BINARYTR.C
else
-1-[t]T
{
temp=temp-> left;
}
}
if (data>pre->data)
pre->right=neunode;
}
else
prev-> left-mewnode;
printf ('node having 2 eleent ans inserted", data) :
}
}
struct node *del(struct node *root, int key)
16?:1
F1 Help Alt-F8 Next Msg Alt-F? Prev Msg Alt-F9
Alt-F9 Compi le F9 Make F10 Menu
File
EFile Edit Search Run Compi le Debug Pro,ject Options Windou Help
DDFS\BINARYTR.C 1-[tl
struct node del(struct node *root, int key)
if (root=-NULL)
f
return root:
}
if (key<root->data)
{ ***************
root-> left=del(root-> left, key):
}
else if (key>root->data)
{
root->right=del(root->right, key):
else
if (root-> leftz=NULL)
temp=root->right:
free(root);
=186:1 H
F1 Help Alt-F8 Next Msg Alt-F? Prev Msg Alt-F9 Comp i le F9 Make F10 Menu
E File Edit Scarch Run Comp i le Debug Pro ject Options Window Help
{
DDFS\BINARYTR.C -1-[$]
if (root-> lef t=-NULL )
temp=root->r ight :
free(root);
returm temp:
}
else if (root->right==NULL )
{
temp=root-> left:
free(root);
returm temp;
}
temp=sma llestode(root->right):
root->data=temp->data:
root->right=de 1(root->right, temp->data): ***
printf( Node having zd elomant as8 dreleated",key);
return root;
200:1
F1 Help AltF8 Next Msg Alt-F? Prey Msg Alt-F9 Comp i le F9 Make F10 Menu
E File Edit Run
Search Run Comp ile Debug Pro,ject Options Window Help
-[u] DDFS\BINARYTR.C =1-[$1
struct node *largestnode (struct node *root)
struct node *curr=root:
while(curr!=NULL && curr->right !-NULL)
{
Curr=curr->right:
return c r r ;
struct node *Smallestnode(struct node *root)
struct node *CurrFroot:
while(Curr!=NULL && curr-> left!=NULL)
curr=curr->left ;
223:1
F1 Help Ált-F8 Next Msg Alt-F? Prev Msg Alt-F9 Comp i le F9 Make F10 Menu
E File Edit Search Run Comp i le Debug Pro ject Uptions Windou Help
-[u]= DDFS\B INARYTR.C =1=[ $]
return curr;
void preorder (struct node *root )//root left right
if (root=-NULL)
returm:
printf
( ,root->data);
preorder (root->left):
preorder (root->right) :
void inorder (struct mode *root) //1eft root right
if(root=-NULL)
return:
243:1
F1 Help Alt-F8 Next Msg Alt-F? Prev Msg AIt F9 Compile
Alt F9 Make F10 Menu
E File Edit Scarch Run Compile Debug Pro ject Üptions Window Help
DDFS\B INARYTR.C =1-[$]
return:
inorder (root->left);
printf
( ,root->data);
inorder (root->r ight):
oid postorder (struct node *root)/left right root
if (root=-NULL)
{
return:
}
postorder (root->left);
postorder(root->right);
printf
( ,root->data);
int getdata ()
int data;
262:1
F1 Help Alt-F8 Next Msg Alt-F? Prev Msg Alt-F9 Compile F9 Make F10 Menu
E File Edit Search Run Comp ile Debug Pro ject Options Window Help
DDFS\BINARYTR.C 1-[$]
inorder (root->right);
void postorder (struct node xroot) /left right root
if (root=-NULL)
returm:
postorder (root-> left); R*****************80****
postorder (root->right);
printf , root->data);
int getdata()
int data:
printf(Enter Data:"):
Scanf ('", &data) :
returm data:
266:1
F1 Help Alt-F8 Next Msg Alt-F? Prev Msg Alt F9 Compile F9
F9 Make
Make F10 Menu