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

二叉搜索树(BST)查找值功能异常排查求助

二叉搜索树searchPrice函数问题分析与修复

问题点:

  • 返回值大小写不匹配:需求要求参数≤0时返回"error",但代码返回的是"Error",大小写不一致。
  • 空节点处理错误:当递归到叶子节点的左/右子节点(即this.left或this.right为null)时,直接调用searchPrice会抛出Cannot read property 'searchPrice' of null的错误,因为null没有该方法。且原代码中this.value === null的判断位置错误,此时已经触发递归调用,根本不会走到这个判断。
  • 逻辑分支覆盖不全:当前代码未考虑子节点不存在的情况,导致未找到目标值时无法正确返回false。

修复后的代码:

BinarySearchTree.prototype.searchPrice = function (price) {
    // 先处理参数错误,匹配需求的返回值大小写
    if (price <= 0) return "error";  

    // 当前节点值匹配,返回true
    if (this.value === price) return true;

    // 目标值更大,检查右子节点是否存在,存在则递归,否则返回false
    if (this.value < price) {
        return this.right ? this.right.searchPrice(price) : false;
    }

    // 目标值更小,检查左子节点是否存在,存在则递归,否则返回false
    if (this.value > price) {
        return this.left ? this.left.searchPrice(price) : false;
    }

    // 兜底返回,覆盖所有未匹配场景
    return false;
};

修复说明:

  1. 修正了错误返回值的大小写,确保和需求一致。
  2. 在递归调用左右子节点前,先判断子节点是否存在:如果存在则递归搜索,不存在直接返回false,避免空指针错误。
  3. 调整逻辑顺序,确保所有分支都有明确的返回值,覆盖未找到目标的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 22:09:19