gpt4 book ai didi

c - 在二叉树中搜索元素,函数总是返回0

转载 作者:行者123 更新时间:2023-11-30 18:17:52 25 4
gpt4 key购买 nike

我用 C 编写了以下函数,如果该元素确实在二叉树中,则返回 1,否则返回 0。

int isElementInBinaryTree(BinaryTreeNode *root, int search_item) {
if(root) {
if(search_item == root -> data) return 1;
isElementInBinaryTree(root -> left, search_item);
isElementInBinaryTree(root -> right, search_item);
}

return 0;
}

首先,我输入函数来查看根是否存在,如果存在,我查看该根处的数据并将其与 search_item 进行比较。如果为真,我只需返回 1 并退出,否则我继续前序遍历。为什么我总是得到返回 0 无论如何?即使该项位于二叉树中?

最佳答案

您不使用对 isElementInBinaryTree 的递归调用的返回值。您必须将递归调用的结果传播到最顶层的调用。现在的情况是,只有当目标项位于根节点时才会返回 1。

所以:

int isElementInBinaryTree(BinaryTreeNode *root, int search_item)
{
if(root) {
if (search_item == root -> data) return 1;
if (isElementInBinaryTree(root -> left, search_item)) return 1;
if (isElementInBinaryTree(root -> right, search_item)) return 1;
}

return 0;
}

关于c - 在二叉树中搜索元素,函数总是返回0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36363432/

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