期待どおりに機能するこの再帰関数を作成しました。それは二分木を検証します。つまり、与えられた二分木が二分探索木であるかどうかをチェックし、正しい答えも与えます。
ただし、次のようなコンパイラ警告が表示されます。
Control may reach end of non-void function
このエラーが何を意味するのかはわかりbool
ます。関数は、関数の最後でフォールオフするだけでなく、を返す必要があります。それはを返すので、私はそれを克服する方法がわかりませんbool
。
繰り返しながら見落としていたかもしれないものを探してみたが、役に立たなかった。
bool isBSTRecursively(Node * root){
if (!root) {
return true;
}else if (!root->getLeft() && !root->getRight()){
return true;
}else if(!root->getLeft()){
if (root->getRight()->getData() > root->getData()) {
return isBSTRecursively(root->getRight());
}
}else if (!root->getRight()){
if (root->getLeft()->getData() < root->getData()) {
return isBSTRecursively(root->getLeft());
}
}else{
return (isBSTRecursively(root->getLeft()) && isBSTRecursively(root->getRight()));
}
}