Binary Search Tree (Insertion, Deletion, Display) Menu card

Write a Modular C Programming code for Binary Search Tree (Insertion, Deletion, Display) Menu card System DSA

Binary Search Tree

What is Binary Search Tree?

Binary Search Tree is a node-based binary tree data structure which has the following properties:

  • The left subtree of a node contains only nodes with keys lesser than the node’s key.
  • The right subtree of a node contains only nodes with keys greater than the node’s key.
  • The left and right subtree each must also be a binary search tree.

Refer : C Programming HackerRank all solutions for Loops | Arrays | strings | Data Structures | Linked lists | Stacks | Queues | Binary Trees

 

CODE:

#include<stdio.h>

struct node {
	int key;
	struct node *left, *right;
};


struct node* newNode(int item)
{
	struct node* temp
		= (struct node*)malloc(sizeof(struct node));
	temp->key = item;
	temp->left = temp->right = NULL;
	return temp;
}


void inorder(struct node* root)
{
	if (root != NULL) {
		inorder(root->left);
		printf("%d->", root->key);
		inorder(root->right);
	}
}


struct node* insert(struct node* node, int key)
{

	if (node == NULL)
		return newNode(key);


	if (key < node->key)
		node->left = insert(node->left, key);
	else
		node->right = insert(node->right, key);


	return node;
}

struct node* minValueNode(struct node* node)
{
	struct node* current = node;


	while (current && current->left != NULL)
		current = current->left;

	return current;
}


struct node* deleteNode(struct node* root, int key)
{
	if (root == NULL)
		return root;

	if (key < root->key)
		root->left = deleteNode(root->left, key);
	else if (key > root->key)
		root->right = deleteNode(root->right, key);

	else {
		if (root->left == NULL) {
			struct node* temp = root->right;
			free(root);
			return temp;
		}
		else if (root->right == NULL) {
			struct node* temp = root->left;
			free(root);
			return temp;
		}
		struct node* temp = minValueNode(root->right);


		root->key = temp->key;

		root->right = deleteNode(root->right, temp->key);
	}
	return root;
}


int main()
{
    int key,no,del,ch;
	struct node* root = NULL;

	while(1)
   {
     printf("\n\n+++++++++++++++++++++++++++++++++++++++++++++\n");
     printf("1) Insert Data\n");
     printf("2) Delete Data\n");
     printf("3) Exit\n");
     printf("+++++++++++++++++++++++++++++++++++++++++++++\n");

     printf("-> Enter your choice: ");
     scanf("%d",&ch);
     switch(ch)
     {

    case 1: printf("Enter the DATA of node: ");
            scanf("%d",&key);
            root = insert(root, key);
            printf("\nLatest Inorder traversal of the given tree \n");
            inorder(root);
            break;
    case 2: printf("Enter the node data to DELETE: ");
            scanf("%d",&del);
            root = deleteNode(root, del);
            printf("\nLatest Inorder traversal of the given tree \n");
            inorder(root);
            break;
    case 3: exit(0);break;
    default: printf("Invalid choice\n");
     }
   }
}


OUTPUT

+++++++++++++++++++++++++++++++++++++++++++++
1) Insert Data
2) Delete Data
3) Exit
+++++++++++++++++++++++++++++++++++++++++++++
-> Enter your choice: 1
Enter the DATA of node: 12

Latest Inorder traversal of the given tree
12->

+++++++++++++++++++++++++++++++++++++++++++++
1) Insert Data
2) Delete Data
3) Exit
+++++++++++++++++++++++++++++++++++++++++++++
-> Enter your choice: 1
Enter the DATA of node: 45

Latest Inorder traversal of the given tree
12->45->

+++++++++++++++++++++++++++++++++++++++++++++
1) Insert Data
2) Delete Data
3) Exit
+++++++++++++++++++++++++++++++++++++++++++++
-> Enter your choice: 1
Enter the DATA of node: 1

Latest Inorder traversal of the given tree
1->12->45->

+++++++++++++++++++++++++++++++++++++++++++++
1) Insert Data
2) Delete Data
3) Exit
+++++++++++++++++++++++++++++++++++++++++++++
-> Enter your choice: 1
Enter the DATA of node: 3

Latest Inorder traversal of the given tree
1->3->12->45->

+++++++++++++++++++++++++++++++++++++++++++++
1) Insert Data
2) Delete Data
3) Exit
+++++++++++++++++++++++++++++++++++++++++++++
-> Enter your choice: 1
Enter the DATA of node: 10

Latest Inorder traversal of the given tree
1->3->10->12->45->

+++++++++++++++++++++++++++++++++++++++++++++
1) Insert Data
2) Delete Data
3) Exit
+++++++++++++++++++++++++++++++++++++++++++++
-> Enter your choice: 2
Enter the node data to DELETE: 10

Latest Inorder traversal of the given tree
1->3->12->45->

+++++++++++++++++++++++++++++++++++++++++++++
1) Insert Data
2) Delete Data
3) Exit
+++++++++++++++++++++++++++++++++++++++++++++
-> Enter your choice: 2
Enter the node data to DELETE: 12

Latest Inorder traversal of the given tree
1->3->45->

+++++++++++++++++++++++++++++++++++++++++++++
1) Insert Data
2) Delete Data
3) Exit
+++++++++++++++++++++++++++++++++++++++++++++
-> Enter your choice: 3

Process returned 0 (0x0)   execution time : 50.367 s
Press any key to continue.

Please find some more codes of Loops, Condition Statements, 1D Arrays, 2D Arrays, Strings, Pointers, Data Structures, Files, Linked lists, Stacks, Queues, Binary Trees, MISC, Solved model question papers & Hacker Rank all solutions on the below page:

Top 100+ C Programming codes – KLE Technological University

Leave a Comment

Ads Blocker Image Powered by Code Help Pro

Ads Blocker Detected!!!

Welcome to FactsPrime

Sorry, We have detected that you have activated Ad-Blocker. Please Consider supporting us by disabling your Ad Blocker, It helps us in maintaining this website. To View the content, Please disable adblocker and refresh the page.

Thank You !!!