验证二叉搜索树- 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)
相关推荐
历程里程碑10 小时前
Linux 2 指令(2)进阶:内置与外置命令解析
linux·运维·服务器·c语言·开发语言·数据结构·ubuntu
福楠10 小时前
C++ STL | set、multiset
c语言·开发语言·数据结构·c++·算法
么么...11 小时前
布隆过滤器详解:原理、实现与应用
java·数据结构·哈希算法·散列表
Sheep Shaun11 小时前
深入理解红黑树:从概念到完整C++实现详解
java·开发语言·数据结构·c++·b树·算法
tobias.b11 小时前
408真题解析-2010-3-数据结构-线索二叉树
数据结构·链表·计算机考研·408真题解析
tobias.b11 小时前
408真题解析-2010-2-数据结构-双端队列
数据结构·计算机考研·408真题解析
旭意11 小时前
数据结构-红黑树和set
数据结构·c++·算法·蓝桥杯
宵时待雨11 小时前
数据结构(初阶)笔记归纳7:链表OJ
c语言·开发语言·数据结构·笔记·算法·链表
充值修改昵称11 小时前
数据结构基础:堆高效数据结构全面解析
数据结构·python·算法
好奇龙猫11 小时前
【大学院-筆記試験練習:线性代数和数据结构(15)】
数据结构·线性代数