gpt4 book ai didi

c++ - 递归到达非空二叉搜索树

转载 作者:行者123 更新时间:2023-11-28 04:28:28 27 4
gpt4 key购买 nike

我收到警告,它已到达非 void 函数的末尾。它应该在二叉搜索树中搜索。如果找到理想的结果,则返回 SUCCESS。我该怎么做才能修复它?

TREEResult FindInBST(Node<T>* node,int key, void** value,int treeSize)
{
if(node!=NULL && node->key==key)
{
*value=node->data;
return SUCCESS;
}
if(treeSize==0)
{
return FAILURE;
}
if(node->key<key)
{ treeSize--;
FindBST(node->rightSon,key,value,treeSize);
}
else
{ treeSize--;
FindBST(node->LeftSon,key,value,treeSize);
}

}

最佳答案

您 promise 返回一个 TREEResult 但不在两个递归调用中。值得庆幸的是,编译器对此发出了警告,因为违反此规则是未定义的行为。

要解决此问题,您需要更改:

FindBST(node->rightSon,key,value,treeSize);

return FindBST(node->rightSon,key,value,treeSize);

还有

FindBST(node->LeftSon,key,value,treeSize);

return FindBST(node->LeftSon,key,value,treeSize);

正如@molbdnilo 在评论中提到的,递归调用与非递归调用之间没有“魔力”。 如果您应该返回,则需要这样做。

返回值失败是未定义的行为。

这些递归调用返回的值将从您的基本案例返回的成功或失败结果之一传播,具体取决于搜索是否找到该项目。

关于c++ - 递归到达非空二叉搜索树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53684766/

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