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

Program To Implement Binary Search Tree in C

The document describes a C program to implement a binary search tree. It defines a node structure with left and right pointers and includes functions to insert nodes, search for a node, and traverse the tree using inorder, preorder and postorder traversal. The main function allows the user to insert nodes, search, and traverse the tree by calling the respective functions.

Uploaded by

kutti21
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
471 views

Program To Implement Binary Search Tree in C

The document describes a C program to implement a binary search tree. It defines a node structure with left and right pointers and includes functions to insert nodes, search for a node, and traverse the tree using inorder, preorder and postorder traversal. The main function allows the user to insert nodes, search, and traverse the tree by calling the respective functions.

Uploaded by

kutti21
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 5

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


*********************************************/

You might also like