You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

二叉搜索树递归搜索元素函数返回结果异常问题排查

代码存在的核心问题
  • 缺少空指针边界校验,会触发段错误
    代码未判断root是否为NULL就直接访问root->data,当传入空树、或者递归到叶子节点的左右空子节点时,会触发空指针访问异常,程序直接崩溃。
  • 丢失递归调用的返回值,查找逻辑完全失效
    调用左右子树的search递归函数时,没有将递归的返回值向上传递,除了根节点正好等于目标元素的场景会返回true,其余所有情况不管是否查找到元素,最终都会走到最后的return false,返回结果恒为假。
修正后的参考实现
struct node {
    int data;
    struct node *left; /* left tree part */
    struct node *right; /* right tree part */
};

bool search(struct node *root, int element) {
    // 空节点说明未找到目标元素
    if (root == NULL) {
        return false;
    }
    if (root->data == element) {
        return true;
    }
    if (root->data < element) {
        // 向右子树查找,直接返回递归结果
        return search(root->right, element);
    } else {
        // 向左子树查找,直接返回递归结果
        return search(root->left, element);
    }
}

内容的提问来源于stack exchange,提问作者KVL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 00:36:03