以前のタスク(式を受け取り、結果を与えるプレフィックス式ツリー)を変更する必要がある割り当てを行っています
+ OR
* AND
- NOT
ここで、ANDORおよび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