Vous êtes sur la page 1sur 4

NAME:R.

DIVYA
REG.NO:21609104022.
DATE:

Implementation Of Expresssion Tree

Program Coding:

#include<stdio.h>

#define operand(x)(x>='a' && x<='z')

typedef struct node *tree;

struct node
{
char data;
tree left,right;
}*t=NULL;

tree stack[20];
char postf[20];
int top=-1;

void conversion();
void infix(tree);
void prefix(tree);
void postfix(tree);
void push(tree);
tree pop();

main()
{

printf("\nEnter the postfix expression:\t");


scanf("%s",postf);
conversion();

printf("\nThe tree traversal:");


printf("\n Infix Traversal:\n");
infix(t);

printf("\n Prefix Traversal:\n");


prefix(t);

printf("\n Postfix Traversal:\n");


postfix(t);

void conversion()
{

int i;
NAME:R.DIVYA.
REG.NO:21609104022.
char x;
tree a,b,c;
for(i=0;postf[i]!='#';i++)
{
x=postf[i];
if(operand(x))
{
a=(tree)malloc(sizeof(struct node));
a->data=x;
a->left=NULL;
a->right=NULL;
push(a);
}
else
{
a=pop();
b=pop();
c=(tree)malloc(sizeof(struct node));
c->data=x;
c->left=b;
c->right=a;
push(c);
}
}
t=stack[top];

void push(tree a)
{

top++;
stack[top]=a;

tree pop()
{

tree a;
if(top==-1)
printf("\nThe Stack is empty");
else
{
a=stack[top];
top--;
}
return(a);

void infix(tree t)
{
NAME:R.DIVYA.
REG.NO:21609104022.
if(t!=NULL)
{
infix(t->left);
printf("%c",t->data);
infix(t->right);
}

void prefix(tree t)
{

if(t!=NULL)
{
printf("%c",t->data);
prefix(t->left);
prefix(t->right);
}

void postfix(tree t)
{

if(t!=NULL)
{
postfix(t->left);
postfix(t->right);
printf("%c",t->data);
}

}
NAME:R.DIVYA.
REG.NO:21609104022

Output:

Enter the postfix expression: ab+cde+**#

The tree traversal:

Infix Traversal:

a+b*c*d+e

Prefix Traversal:

*+ab*c+de

Postfix Traversal:

ab+cde+**

Vous aimerez peut-être aussi