I am doing my assignment in which I have to modify my previous task (which is prefix expression tree which takes expression and give result)
+ OR
* AND
- NOT
Now I have to make it Logic expression tree which will perform AND OR and NOT operations
char input;
cin.get(input);
if((input == '+')||(input == '-')||(input == '*'))
{
p = new ExprTreeNode(input,NULL,NULL);
buildSub(p->left);
buildSub(p->right);
}
else if(isdigit(input))
{ //create a new node
p = new ExprTreeNode(input,NULL,NULL);
}
else
{
cout <<" invalid expression exiting..." <<endl;
exit (1);
}
above code reads expression and makes tree using recursion…
I am confused how I can add unary operator that is NOT…
after that I have to evaluate expression
int answer;
switch (p->dataItem){
case '*':
// AND
case'+':
// OR
case '-':
// Reverse
default:
answer = (p->dataItem-'0');
break;
}
return answer;
p is ExprTreeNode
// Data members
char dataItem; // Expression tree data item
ExprTreeNode *left, // Pointer to the left child
*right; // Pointer to the right child
I’d say you want to do the following:
Edit:
Then, the evaluation routine could work like this: