Was this help full or if you didn't understand this code then feel free to ask me comment your question or you can mail me @ raj.nishant360@gmail.com
You can mail me or comment your views about improving my blog.
You can mail me or comment your views about improving my blog.
#include<stdio.h>
#include<stdlib.h>
struct node
{
int data;
struct node *LCHILD;
struct node *RCHILD;
}*tree;
struct stack
{
struct node *addr[100];
int top;
}s,s1,s2;
void push(struct node *val,struct stack *temp)
{
if(temp->top==99)
{
printf("overflow\n");
return ;
}
temp->addr[++temp->top]=val;
}
struct node *pop(struct stack *temp)
{
if(temp->top==-1)
{
printf("under flow\n");
return NULL;
}
return temp->addr[temp->top--];
}
struct node *create(int val)
{
struct node *temp;
temp=(struct node*)malloc(sizeof(struct node));
temp->data=val;
temp->LCHILD=NULL;
temp->RCHILD=NULL;
return temp;
}
void add(struct node **tr,int val)
{
struct node *copy,*copy1;
copy=(struct node*)malloc(sizeof(struct node));
copy1=(struct node*)malloc(sizeof(struct node));
copy1=*tr;
if(copy1==NULL)
{
*tr=create(val);
return ;
}
if(val>=copy1->data)
add(&(copy1->RCHILD),val);
else
add(&(copy1->LCHILD),val);
}
void print_inorder(struct node *tr)
{
struct node *p;
p=(struct node*)malloc(sizeof(struct node));
p=tr;
push(NULL,&s1);
step_2:
while(p!=NULL)
{
push(p,&s1);
p=p->LCHILD;
}
p=pop(&s1);
while(p!=NULL)
{
printf("%d\t",p->data);
if(p->RCHILD!=NULL)
{
p=p->RCHILD;
goto step_2;
}
p=pop(&s1);
}
}
int main()
{
tree=NULL;
s.top=-1;
s1.top=-1;
s2.top=-1;
REPEAT:
printf("ENTER YOUR CHOICE\n");
printf("1->add node to tree\n");
printf("2->print in INORDER tree\n");
printf("3->exit\n");
int choice,val;
scanf("%d",&choice);
switch(choice)
{
case 1:
scanf("%d",&val);
add(&tree,val);
break;
case 2:
print_inorder(tree);
break;
case 3:
exit(2);
default:
printf("your choice is incorrect\n");
}
goto REPEAT;
return 0;
}
No comments:
Post a Comment
Your comment is valuable to us