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

递归验证二叉搜索树(BST)测试不通过 求代码错误排查

错误定位

你的代码错误出在初始递归调用的参数传递上:
最后一行调用valid函数时,你给根节点传入的上界是float("-inf")(负无穷),正确的入参应该是float("inf")(正无穷)。

错误原因

BST根节点的取值没有上下限约束,合法范围是大于负无穷、小于正无穷。你给上下界都传了负无穷,导致根节点的校验条件node.val < right必然不成立,所有测试用例都会直接返回False,这就是你第一个测试用例[2,1,3]输出不符合预期的原因。

修正后代码

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def isValidBST(self, root: Optional[TreeNode]) -> bool:
        
        def valid(node, left, right):
            if not node:
                return True
            
            if not (node.val>left and node.val<right):
                return False
            
            return (valid(node.left, left, node.val) and valid(node.right, node.val, right))
                    
        return valid(root, float("-inf"), float("inf"))

效果验证

修改后:

  • 测试用例[2,1,3]:根节点2满足-∞ < 2 < +∞,左子节点1满足-∞ <1 <2,右子节点3满足2 <3 <+∞,返回True,符合预期。
  • 测试用例[5,1,4,null,null,3,6]:右子节点4的校验范围是5 < 节点值 < +∞,4不满足大于5的条件,返回False,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 09:36:04