验证二叉搜索树- python-递归&上下界约束

题目:

思路:

易错点:

  1. 二叉搜索树(BST)要满足的是:**左子树所有节点 < 当前节点 < 右子树所有节点,**而非仅比较直接子节点
  2. 空节点处理:空树是合法的BST
  3. 叶子节点处理:叶子节点是合法的BST

上下界传递:

  1. 左子树的所有节点必须小于当前节点,因此左子树的上界为当前节点值
  2. 右子树的所有节点必须大于当前节点,因此右子树的下界为当前节点值。

空节点处理 :空树是合法 BST,返回True

范围验证:每个节点都要在(lower,upper)上

递归终止条件:任一子树不满足BST条件,返回False

代码:

复制代码
# 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 check(node, lower=float('-inf'), upper=float('inf')):
            if not node:return True
            if node.val <= lower or node.val >= upper:
                return False
            if not check(node.left,lower,node.val):
                return False
            if not check(node.right,node.val,upper):
                return False
            return True
        return check(root)
相关推荐
Chester_19993 小时前
CSP202206C.角色授权
开发语言·数据结构·c++·蓝桥杯
旖旎夜光4 小时前
LeetCode 238:除自身以外数组的乘积(前缀和) —— 题解
数据结构·c++·算法·leetcode·前缀和
一条大祥脚4 小时前
26杭电暑期第八场(后半)快读|快写|tarjan|路径DP|mex转化|扫描线|前缀和|二分图
数据结构·算法·tarjan·杭电多校·强联通分量·动态规划dp
Chester_199913 小时前
CSP202203C.计算资源调度器
开发语言·数据结构·c++·蓝桥杯
专注仿真18 小时前
Spring AI 实现智能对话系统项目指南
数据结构·spring·机器学习
间歇性努力持续性发呆的野生快乐选手18 小时前
高级数据结构:树状数组
数据结构
每周报刊1 天前
竞速座舱级视界:爱攻 AGP497UCZD 超宽 QDOLED 显示器解析
数据结构·游戏·计算机外设
小星星闪亮登场1 天前
图论--最小生成树(内含二分图)
数据结构·算法·图论·迭代加深·图搜索算法
2601_962201721 天前
Java进阶,集合,Colllection,常见数据结构
java·数据结构·windows
挽星安1 天前
2026/8/29
数据结构·算法