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

二叉树递归bool搜索函数运行异常问题求助

问题分析与修复方案

嘿,我一眼就发现问题所在啦!你的二叉树搜索代码有两个关键问题,导致它没法正常工作,咱们一步步来解决:

核心问题:丢失递归调用的返回值

你的递归search函数在调用左右子树的搜索逻辑时,没有把递归调用的结果返回给上层。比如这段代码:

else if (x < t->value) search(x, t->left); 

你确实触发了左子树的搜索,但没有把这个搜索的结果传递回去,函数会继续执行到最后的return false——这就导致哪怕子树里找到了目标值,最终也会返回false。

次要问题:未处理空节点的边界情况

当递归到叶子节点的子节点(也就是t为nullptr)时,直接访问t->value会触发空指针异常,这是会导致程序崩溃的严重问题,必须先处理这个边界条件。

修复后的完整递归搜索函数

bool search(double x, TreeNode *t) { 
    // 先处理空节点,直接返回false(没有找到目标值)
    if (t == nullptr) return false;
    
    if (t->value == x) return true; 
    else if (x < t->value) return search(x, t->left); // 返回左子树的搜索结果
    else /* x > t->value */ return search(x, t->right); // 返回右子树的搜索结果
    // 这里不需要额外的return false,上面的分支已经覆盖了所有可能情况
}

修复逻辑说明

  • 空节点检查:确保我们不会访问不存在的节点成员,彻底避免空指针崩溃。
  • 返回递归结果:当在左/右子树搜索时,直接把递归调用的结果返回,这样如果子树中找到目标值,true会逐层传递回最初的调用者;如果所有子树都搜完没找到,最终会触发空节点的return false。

现在再测试你的单参数search函数,它就能正常工作啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:58:58