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