Dsa SK Ass4
Dsa SK Ass4
ASSIGNMENT: 04
Program:
#include <iostream>
using namespace std;
class Node
{
public:
char data;
Node* left;
Node* right;
Node(char value) : data(value), left(nullptr), right(nullptr) {}
};
class ExpressionTree
{
public:
int evaluate(Node* root)
{
if (!root->left && !root->right)
return root->data - '0';
int leftResult = evaluate(root->left);
int rightResult = evaluate(root->right);
switch (root->data)
{
case '+': return leftResult + rightResult;
case '-': return leftResult - rightResult;
case '*': return leftResult * rightResult;
case '/': return leftResult / rightResult;
default: throw runtime_error("Invalid Operator");
}
}
};
int main()
{
Node* root = new Node('+');
root->left = new Node('*');
root->right = new Node('5');
root->left->left = new Node('3');
root->left->right = new Node('2');
ExpressionTree tree;
cout << "Result: " << tree.evaluate(root) << endl;
delete root->left->left;
delete root->left->right;
delete root->left;
delete root->right;
delete root;
return 0;
}
Output:
Explanation:
Left Subtree: 3 * 2 → 6
Right Subtree: 5
Root Operator (+): 6 + 5 → 11
Reference:
Evaluation of Expression tree:
https://www.geeksforgeeks.org/evaluation-of-expression-tree/