我正在做我的任务,我必须修改我以前的任务(这是前缀表达式树,它接受表达式并给出结果)
+ OR
* AND
- NOT
现在我必须使它成为逻辑表达式树,它将执行 AND OR 和 NOT 操作
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);
}
上面的代码读取表达式并使用递归生成树...
我很困惑如何添加不是的一元运算符......之后我必须评估表达式
int answer;
switch (p->dataItem){
case '*':
// AND
case'+':
// OR
case '-':
// Reverse
default:
answer = (p->dataItem-'0');
break;
}
return answer;
p 是 ExprTreeNode
// Data members
char dataItem; // Expression tree data item
ExprTreeNode *left, // Pointer to the left child
*right; // Pointer to the right child