-
Notifications
You must be signed in to change notification settings - Fork 0
/
Expressiontree.cpp
74 lines (65 loc) · 1.08 KB
/
Expressiontree.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include <iostream>
#include <stack>
using namespace std;
class node
{ public:
char data;
node *left,*right;
}*root;
class Etree{
public:
Etree(){
root=NULL;
}
node *createExpTree(){
stack<node *>st;
node* temp,*temp1;
char exp[10];
cout<<"enter the prefix expression==";
cin>>exp;
int len=0;
for(int i=0;exp[i]!='\0';i++)
{
len=i;
}
for (int i=len;i>=0;i--)
{
char ch=exp[i];
if(ch>='a'&& ch<='z')
{ temp1=new node;
temp1->data=ch;
temp1->left=NULL;
temp1->right=NULL;
st.push(temp1);
}
else{
temp=new node;
temp->data=ch;
temp->left=NULL;
temp->right=NULL;
temp->left=st.top();
st.pop();
temp->right=st.top();
st.pop();
st.push(temp);
}
}
root=st.top();
return root;
}
void inorder(node*root)
{ if(root==NULL)
return;
inorder(root->left);
cout<<root->data;
inorder(root->right);
}
};
int main()
{
Etree E;
node *root =E.createExpTree();
cout<<"Expression tree is created"<<endl;
cout<<"Inorder traversal of the expression tree:";
E.inorder(root);
return 0;}