式ツリーのリーフ ノードを検証するブール関数を作成しました。ノードが任意の演算子である場合、false を返します。それ以外の場合は、true を返す必要があります。それは再帰的に自分自身を呼び出します...これが問題だと思います。ブール関数を再帰的にすることはできますか? これが私の機能です
bool validate(tnode* node)
{
if(node == NULL)
{
cout<<"Node is null";
return false;
}
if(node->left == NULL && node->right==NULL)
{
cout<<node->key<<endl<<endl;
if(node->key == '+' || '-' || '*' || '/')
return false;
else
return true;
}
else
validate(node->left);
validate(node->right);
}
実際には、すべてのリーフ ノードの値が完全に出力されます。abcd 2 e 3 です。しかし、メイン関数で実行すると、常に false が返されます。理由についてのアイデアはありますか?