tree-sort.c
parent
af47764be0
commit
a1bfe2868a
|
@ -0,0 +1,85 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <malloc.h>
|
||||
struct node
|
||||
{
|
||||
int data;
|
||||
struct node *left, *right;
|
||||
};
|
||||
struct node *root;
|
||||
void ins(struct node *, int, int);
|
||||
void inser(struct node *, int);
|
||||
void display(struct node *);
|
||||
int main()
|
||||
{
|
||||
int choice, no = 0, parentnode;
|
||||
root = (struct node *)malloc(sizeof(struct node));
|
||||
printf("\nEnter a number for parent node : ");
|
||||
scanf("%d", &parentnode);
|
||||
root->data = parentnode;
|
||||
root->left = root->right = NULL;
|
||||
do
|
||||
{
|
||||
printf("\n1.Add element");
|
||||
printf("\n2.Sort");
|
||||
printf("\n3.Exit");
|
||||
printf("\nEnter your choice : ");
|
||||
scanf("%d", &choice);
|
||||
switch (choice)
|
||||
{
|
||||
case 1:
|
||||
printf("Enter the element to insert : \n");
|
||||
scanf("%d", &no);
|
||||
inser(root, no);
|
||||
break;
|
||||
case 2:
|
||||
printf("\nSorted elements are : \n");
|
||||
display(root);
|
||||
break;
|
||||
default:
|
||||
printf("\nInvalid press...");
|
||||
exit(0);
|
||||
}
|
||||
} while (choice < 3);
|
||||
return 0;
|
||||
}
|
||||
void ins(struct node *n, int value, int opt)
|
||||
{
|
||||
struct node *t;
|
||||
t = (struct node *)malloc(sizeof(struct node));
|
||||
t->data = value;
|
||||
t->left = t->right = NULL;
|
||||
if (opt == 1)
|
||||
n->left = t;
|
||||
else
|
||||
n->right = t;
|
||||
printf("%d is inserted", value);
|
||||
if (opt == 1)
|
||||
printf(" at the left \n");
|
||||
else
|
||||
printf(" at the right \n");
|
||||
}
|
||||
void inser(struct node *t, int x)
|
||||
{
|
||||
if (t->data > x)
|
||||
if (t->left == NULL)
|
||||
ins(t, x, 1);
|
||||
else
|
||||
inser(t->left, x);
|
||||
else if (t->data < x)
|
||||
if (t->right == NULL)
|
||||
ins(t, x, 2);
|
||||
else
|
||||
inser(t->right, x);
|
||||
else
|
||||
printf("Element is already exist in the list ");
|
||||
}
|
||||
void display(struct node *p)
|
||||
{
|
||||
if (p != NULL)
|
||||
{
|
||||
display(p->left);
|
||||
printf("%5d", p->data);
|
||||
display(p->right);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue