バリデーション機能はほぼ動作するようになりましたが、内部ノードをチェックしてオペレーターであることを確認する最後の部分を書きました。この部分がないと、関数はリーフ ノードを正常にチェックします。ただし、内部部分を含めると、最初のノード「-」が出力され、false が返されます。
bool validate(tnode* node)
{
cout<<"validating leaf nodes...."<<endl;
if(node == NULL)
{
cout<<"Node is null";
return false;
}
if(node->left != NULL || node->right != NULL )
{
cout<<node->key<<endl<<endl;
if(node->key != '+' || node->key != '-' || node->key != '/' || node->key != '*')
return false;
}
if(node->left == NULL && node->right==NULL)
{
cout<<"Found leave node "<<node->key<<endl<<endl;
if(node->key == '+' || node->key == '-' || node->key == '*' || node->key == '/')
return false;
}
else
return validate(node->left) && validate(node->right);
}
この関数の問題コードは..
if(node->left != NULL || node->right != NULL )
{
cout<<node->key<<endl<<endl;
if(node->key != '+' || node->key != '-' || node->key != '/' || node->key != '*')
return false;
}
それがなければ、機能は完全に機能します!何が原因なのですか?