-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathexpressin(new).cpp
More file actions
73 lines (73 loc) · 1.4 KB
/
expressin(new).cpp
File metadata and controls
73 lines (73 loc) · 1.4 KB
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
#include<bits/stdc++.h>
using namespace std;
struct node{
char data;
node* left;
node* right;
node(char c){
data = c;
left = right= NULL;
}
};
class stk{
public:
node* arr[30];int top=-1;
int empty(){
if(top==-1) return 1;
return 0;
}
void push(node* root){
if(top==29) return;
else{
top++;
arr[top]=root;
}
}
node* pop(){
if(!empty()){
node* t = arr[top];
top--;
return t;
}
}
};
class tree{
public:
node* last;
void convert(string st);
void display(node* root);
void del(node* root);
};
void tree :: convert(string st){
stk s;
int len = st.length();
for(int i=len-1;i>=0;--i){
node* nn = new node(st[i]);
if(isalpha(st[i])){
s.push(nn);
}else{
node* t1,* t2;
t1 = s.pop();t2=s.pop();
nn->left= t1;
nn->right= t2;
s.push(nn);
}
}
last = s.pop();
}
void tree :: display(node* root){
if(root!=NULL){
display(root->left);
cout<<root->data<<" ";
display(root->right);
}
}
int main(){
string st;
cout<<"enter prefix ";
cin>>st;
tree T;
T.convert(st);
T.display(T.last);
return 0;
}