我写了这个递归函数,它按预期工作。它验证二叉树,即它检查给定的二叉树是否是二叉搜索树,并且也给出正确的答案。验证二叉树的小问题
不过,我得到一个编译器警告说:
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()));
}
}
非唯一数据如何?我的意思是,一个节点及其两个子节点(或两者)中的任何一个可能具有与节点中相同的数据,并且不会违反树的分类。你的代码是否处理这种情况? – 2013-03-24 07:55:49
另外,怎么样循环,让你的树形图?你也想检查一下吗? – 2013-03-24 07:56:41
@AlexeyFrunze,你是对的。感谢您引起我的注意。我也会尝试纳入这些条件。 – totjammykd 2013-03-24 08:11:46