У меня почти есть функция проверки работоспособности, но я только что написал последнюю часть, где он проверяет внутренние узлы, чтобы убедиться, что они операторы. Без этой части функция проверяет мелкие узлы листа. Хотя, когда я включаю внутреннюю часть, она печатает первый узел «-» и возвращает 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? –
Вы хотите изменить свои ORs на AND, например. || to &&? –