Binarytree Merged
Binarytree Merged
h>
#include <stdlib.h>
struct node {
int data;
struct node *right;
struct node *left;
};
if (temp == NULL)
{
printf("\nElement not found\n");
return root;
}
else
{
struct node *succ = temp->right;
struct node *succParent = temp;
temp->data = succ->data;
if (succParent->left == succ)
succParent->left = succ->right;
else
succParent->right = succ->right;
free(succ);
}
return root;
}
int main() {
int ch, n, m;
do {
printf("\n1. Insert");
printf("\n2. Delete ");
printf("\n3. Inorder");
printf("\n4. Preorder");
printf("\n5. Postorder");
printf("\n6. Exit");
printf("\nEnter your choice: ");
scanf("%d", &ch);
switch (ch) {
case 1:
printf("Enter element to add: ");
scanf("%d", &n);
root = insert(root, n);
break;
case 2:
if (root == NULL) {
printf("\nTree is empty\n");
} else {
printf("Enter element to delete: ");
scanf("%d", &m);
root = delete(root, m);
}
break;
case 3:
if (root == NULL)
printf("\nTree is empty\n");
else {
printf("Inorder Traversal: ");
inorder(root);
printf("\n");
}
break;
case 4:
if (root == NULL)
printf("\nTree is empty\n");
else {
printf("Preorder Traversal: ");
preorder(root);
printf("\n");
}
break;
case 5:
if (root == NULL)
printf("\nTree is empty\n");
else {
printf("Postorder Traversal: ");
postorder(root);
printf("\n");
}
break;
case 6:
printf("Exiting...\n");
break;
return 0;
}