gpt4 book ai didi

c++ - 验证二叉树的小问题

转载 作者:行者123 更新时间:2023-11-30 01:59:59 26 4
gpt4 key购买 nike

我编写了这个递归函数,它按预期工作。它验证二叉树,即检查给定的二叉树是否为二叉搜索树,并给出正确答案。

但是,我收到一条编译器警告:

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()));
}
}

最佳答案

在这些部分:

}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());
}

请注意,这里您只在两种特定情况下返回?这就是警告告诉您的内容,代码可以采用的路径未明确包含带值的 return。如果您遇到代码未执行此显式 return 的情况,这可能会导致奇怪的问题。

消除警告的最简单方法是在函数末尾添加一个return false

关于c++ - 验证二叉树的小问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15596149/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com