-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