我几乎已经让我的验证功能工作了,但我只是写了最后一部分,它检查内部节点以确保它们是操作员。如果没有这部分,该函数会很好地检查叶节点。但是,当我包含内部部分时,它会打印出第一个节点“-”并返回 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;
}
没有它,该功能将完美运行!任何想法是什么原因造成的?