Google Ads

Monday, May 25, 2009

Binary Tree Traversal

#include “stdio.h”
#include “conio.h”
#include
#include
struct node
{
struct node *lc;
int data;
struct node *rc;
};
struct node *tree,*btree=NULL,*newnode,*temp;
struct node *getnode();
struct node *createbtree();
struct node *insertnode(struct node *btree,struct node *temp);

void inorder(struct node *btree);
void preorder(struct node *btree);
void postorder(struct node *btree);
void main()
{
int cho;
clrscr();
printf("\n\t\tBinary Tree Traversal\n");
printf("\n\t\t---------------------------\n");
btree=createbtree();
do{
printf("\nBinary Tree Traversal\n");
printf("1.Preorder Traversal\n2.Inorder Traversal\n");
printf("3.Postorder Traversal\n4.Exit");
printf("\nEnter ur choice:");
scanf("%d",&cho);
if(btree==NULL)
printf("\nBinary tree is empty\n");
switch(cho)
{
case 1:
printf("\nPreorder Traversal is:");
preorder(btree);
break;
case 2:
printf("\nInorder Traversal is:");
inorder(btree);
break;
case 3:
printf("\nPostorder Traversal is:");
postorder(btree);
break;
case 4:
exit(0);
getch();
}
}while(cho!=4);
free(btree);
getch();
}
struct node *getnode()
{
newnode=(struct node*)malloc(sizeof(struct node));
printf("\nEnter node's data:");
scanf("%d",&newnode->data);
newnode->lc=NULL;
newnode->rc=NULL;
return(newnode);
}
struct node *createbtree()
{
char ch;
do{
temp=getnode();
btree=insertnode(btree,temp);
fflush(stdin);
printf("\nDo u wish to add data(y/n):");
scanf("%c",&ch);
}while((ch=='Y')(ch=='y'));
return(btree);
}
struct node *insertnode(struct node *btree,struct node *temp)
{
if(btree==NULL)
return temp;
else if(temp->data <>data)
btree->lc=insertnode(btree->lc,temp);
else if(temp->data > btree->data)
btree->rc=insertnode(btree->rc,temp);
else if(temp->data == btree->data)
{
printf("\nData already exists");
return(btree);
}
return(btree);
}
void inorder(struct node *btree)
{
if(btree!=NULL)
{
inorder(btree->lc);
printf("%d ",btree->data);
inorder(btree->rc);
}
}
void preorder(struct node *btree)
{
if(btree!=NULL)
{
printf("%d ",btree->data);
preorder(btree->lc);
preorder(btree->rc);
}
}
void postorder(struct node *btree)
{
if(btree!=NULL)
{
postorder(btree->lc);
postorder(btree->rc);
printf("%d",btree->data);
}
}



Output will be


Enter node's data: 5

Do u wish to add data(y/n): y

Enter node's data: 4

Do u wish to add data(y/n): y

Enter node's data: 7

Do u wish to add data(y/n): y

Enter node's data: 3

Do u wish to add data(y/n): y

Enter node's data: 1

Do u wish to add data(y/n): n

Binary Tree Traversal

1.Preorder Traversal
2.Inorder Traversal
3.Postorder Traversal
4.Exit
Enter your choice: 1

Preorder Traversal is: 5 4 3 1 7

Binary Tree Traversal

1.Preorder Traversal
2.Inorder Traversal
3.Postorder Traversal
4.Exit
Enter your choice: 2

Inorder Traversal is: 1 3 4 5 7

Binary Tree Traversal

1.Preorder Traversal
2.Inorder Traversal
3.Postorder Traversal
4.Exit
Enter your choice: 3

Postorder Traversal is: 1 3 4 7 5

Binary Tree Traversal

1.Preorder Traversal
2.Inorder Traversal
3.Postorder Traversal
4.Exit
Enter your choice: 4

No comments:

Post a Comment