-1
我几乎有了我的验证功能,但我只写了最后一部分,它检查内部节点以确保它们是操作者。如果没有这个部分,函数会很好地检查叶节点。但是,当我包含内部部分时,它会打印出第一个节点“ - ”并返回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;
}
没有它,功能完美的作品!任何想法是什么造成的?
如果'node'等于NULL会发生什么? – 2013-04-26 01:51:22
您是否想要将您的ORs更改为AND,例如||至 && ? – 2013-04-26 01:52:52