【发布时间】:2021-01-01 04:53:06
【问题描述】:
我正在尝试为二叉搜索树实现查找功能。如果我查找树的根,它确实返回 true,但当我查找树中的其他条目时,它返回 false。当我调试它时,该函数似乎返回 1,但随后会继续运行,最后返回 0。我的理解是该函数应在返回任何值后立即终止,因此我不确定为什么会发生这种情况。
int lookup(int n,struct node* x)
{
if (x->data==n)
{
return 1;
}
else if (x->left==NULL && x->right==NULL)
{
return 0;
}
else if (n>x->data && x->right!=NULL)
{
lookup(n,x->right);
}
else
{
lookup(n,x->left);
}
return 0;
}
【问题讨论】:
-
当你进行递归调用时,你会返回什么?
-
您可能想写
return (lookup(n,x->right));而不仅仅是lookup(n,x->right);。 -
对不起,@Stef。我在打字时没有看到你的评论。事实证明是一样的,但是我实际上并没有复制您的输入……请随意做出您自己的解释性答案,我们可以进行投票。 ;-)
-
我想我现在明白了。所以“return 1”退出了查找的递归调用,但由于我没有返回它,第一个调用仍然达到“return 0”?两者都非常有帮助,谢谢。
-
sb2346 在您决定接受哪一个之前,请稍等一下 Stefs 可能即将给出的答案。他值得一点耐心。
标签: c recursion struct binary-search-tree function-definition