PRACTICAL05DSA
PRACTICAL05DSA
CODE::
#include <iostream>
#include <string.h>
struct node
char data;
node *left;
node *right;
};
class tree
char prefix[20];
public:
node *top;
void expression(char[]);
};
class stack1
node *data[30];
int top;
public:
stack1()
top = -1;
int empty()
if (top == -1)
return 1;
return 0;
data[++top] = p;
node *pop()
return (data[top--]);
};
char c;
stack1 s;
int len, i;
len = strlen(prefix);
top->left = NULL;
top->right = NULL;
if (isalpha(prefix[i]))
top->data = prefix[i];
s.push(top);
t2 = s.pop();
t1 = s.pop();
top->data = prefix[i];
top->left = t2;
top->right = t1;
s.push(top);
top = s.pop();
if (root != NULL)
{
cout << root->data;
display(root->left);
display(root->right);
stack1 s1, s2; /*stack s1 is being used for flag . A NULL data implies that the right subtree has not
been visited */
node *T = top;
s1.push(T);
while (!s1.empty())
T = s1.pop();
s2.push(T);
if (T->left != NULL)
s1.push(T->left);
if (T->right != NULL)
s1.push(T->right);
while (!s2.empty())
top = s2.pop();
if (node == NULL)
return;
del(node->left);
del(node->right);
free(node);
int main()
char expr[20];
tree t;
t.expression(expr);
//t.display(t.top);
//cout<<endl;
t.non_rec_postorder(t.top);
t.del(t.top);
// t.display(t.top);
}
O/P: