0

バリデーション機能はほぼ動作するようになりましたが、内部ノードをチェックしてオペレーターであることを確認する最後の部分を書きました。この部分がないと、関数はリーフ ノードを正常にチェックします。ただし、内部部分を含めると、最初のノード「-」が出力され、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;
  }  

それがなければ、機能は完全に機能します!何が原因なのですか?

4

1 に答える 1