PROGRAM TO IMPLEMENT BINARY SEARCH TREE IN C.
#include<stdio.h>
struct BT
{
int data;
struct BT *right, *left;
};
void insert( struct BT ** ptr, int d )
{
if ( ( *ptr ) == NULL )
{
( *ptr ) = ( struct BT* ) malloc( sizeof( struct BT ) );
( *ptr ) ->data = d;
( *ptr ) ->left = ( *ptr ) ->right = NULL;
}
else
{
if ( ( *ptr ) ->data > d )
insert( &( ( *ptr ) ->left ), d );
else
insert( &( ( *ptr ) ->right ), d );
}
return ;
}
int search( struct BT *ptr, int no )
{
if ( ptr == NULL )
return ( 0 );
if ( ptr->data == no )
return ( 1 );
if ( ptr->data > no )
return ( search( ptr->left, no ) );
else
return ( search( ptr->right, no ) );
}
void inorder( struct BT *ptr )
{
if ( ptr == NULL )
return ;
else
{
inorder( ptr->left );
printf( "\t%d", ptr->data );
inorder( ptr->right );
}
}
void preorder( struct BT*ptr )
{
if ( ptr == NULL )
return ;
else
{
printf( "\t%d", ptr->data );
preorder( ptr->left );
preorder( ptr->right );
}
}
void postorder( struct BT*ptr )
{
if ( ptr == NULL )
return ;
else
{
postorder( ptr->left );
postorder( ptr->right );
printf( "\t%d", ptr->data );
}
}
main()
{
struct BT * root;
int ch, d, no, f;
root = NULL;
while ( ch != 6 )
{
printf( "\n 1.Insert\n 2.Search\n 3.Inorder\n 4.Preorder\n 5.Postorder\n 6.Exit\n" );
printf( "\n Enter the choice:" );
scanf( "%d", &ch );
switch ( ch )
{
case 1:
printf( "Enter the data:" );
scanf( "%d", &d );
insert( &root, d );
break;
case 2:
printf( "Enter the node:" );
scanf( "%d", &no );
f = search( root, no );
if ( f == 0 )
printf( "Node is not present" );
else
printf( "Node is present" );
break;
case 3:
inorder( root );
break;
case 4:
preorder( root );
break;
case 5:
postorder( root );
break;
case 6:
break;
}
}
}
/******************OUTPUT******************
1.Insert
2.Search
3.Inorder
4.Preorder
5.Postorder
6.Exit
Enter the choice:1
Enter the data:2
1.Insert
2.Search
3.Inorder
4.Preorder
5.Postorder
6.Exit
Enter the choice:1
Enter the data:54
1.Insert
2.Search
3.Inorder
4.Preorder
5.Postorder
6.Exit
Enter the choice:1
Enter the data:32
1.Insert
2.Search
3.Inorder
4.Preorder
5.Postorder
6.Exit
Enter the choice:1
Enter the data:33
1.Insert
2.Search
3.Inorder
4.Preorder
5.Postorder
6.Exit
Enter the choice:2
Enter the node:2
Node is present
1.Insert
2.Search
3.Inorder
4.Preorder
5.Postorder
6.Exit
Enter the choice:3
2 32 33 54
1.Insert
2.Search
3.Inorder
4.Preorder
5.Postorder
6.Exit
Enter the choice:1
Enter the data:13
1.Insert
2.Search
3.Inorder
4.Preorder
5.Postorder
6.Exit
Enter the choice:4
2 54 32 13 33
1.Insert
2.Search
3.Inorder
4.Preorder
5.Postorder
6.Exit
Enter the choice:5
13 33 32 54 2
1.Insert
2.Search
3.Inorder
4.Preorder
5.Postorder
6.Exit
Enter the choice:6
*********************************************/