Académique Documents
Professionnel Documents
Culture Documents
h>
#include<conio.h>
#include<alloc.h>
typedef struct node
{
struct node *left;
int data;
struct node *right;
}Tree;
Tree *root=NULL,*p,*q;
void create_tree(Tree *,int);
Tree * insertElement(Tree *,int,int);
void preorderTraversal(Tree *);
void inorderTraversal(Tree *);
void postorderTraversal(Tree *);
Tree *deleteElement(Tree *,int);
Tree search(Tree *,int);
int main()
{
int ch,val,rl,node;
clrscr();
create_tree(root,val);
printf("\n1.Insert Element");
printf("\n2.Preorder Traversal");
printf("\n3.Inorder Traversal");
printf("\n4.Postorder Traversal");
printf("\n5.Delete Element");
printf("\n6.Exit");
do
{
printf("\n Enter your option:");
scanf("%d",&ch);
switch(ch)
{
case 1:printf("\n Enter the value of the new node:");
scanf("%d",&val);
insertElement(root,node,val);
break;
case 2:printf("\n The elements of tree in preorder
traversal:");
preorderTraversal(root);
break;
case 3:printf("\n The elements of tree in inorder
traversal:");
inorderTraversal(root);
break;
case 4:printf("\n The elements of tree in postorder
traversal:");
postorderTraversal(root);
break;
case 5:printf("\n Enter element to be deleted:");
scanf("%d",&val);
deleteElement(root,val);
break;
case 6:exit(1);
}
}while((ch>0)&&(ch<7));
getch();
return(0);
}
void create_tree(Tree *p,int val)
{
p=(Tree*)malloc(sizeof(Tree));
p->data=val;
p->left=p->right=NULL;
}
Tree * insertElement(Tree * root,int node,int val)
{
int rl;
if(root==NULL)
root=p;
else
{
q=NULL;
q=search(root,node);
if(q==NULL)
printf("Node doesn't exist");
else
{
printf("Insert R/L?'0' for LEFT...'1' for RIGHT \n");
scanf("%d",&rl);
if(rl==0)
{
if(q->left==NULL)
q->left=p;
else
printf("Already has left child\n");
}
else if(rl==1)
{
if(q->right==NULL)
q->right=p;
else
printf("Already has right child");
}
}
}