当前位置: 首页 > article >正文

【leetcode100】验证二叉搜索树

1、题目描述

给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。

有效 二叉搜索树定义如下:

  • 节点的左子树只包含 小于 当前节点的数。
  • 节点的右子树只包含 大于 当前节点的数。
  • 所有左子树和右子树自身必须也是二叉搜索树。

示例 1:

输入:root = [2,1,3]
输出:true

2、初始思路

2.1 思路

直接判断左右节点与中间节点的关系

# 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:
        if not root:
            return True
        if not root.left and not root.right:
            return True
        return root.left.val<root.val<root.right.val and self.isValidBST(root.left) and self.isValidBST(root.right)

2.2 犯错点

1、在直接访问左右节点时,没有考虑到其值为空的情况

2、没有考虑到二叉搜索树的全局性质,要求不仅满足单个子树条件,还要满足整体的条件。

3 优化算法

3.1 思路

定义左右节点的范围,从而更好地从全局对二叉搜索树进行检索。

# 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 search(node,l=-inf,r=inf):
            if not node:
                return True
            if node.val <= l or node.val >= r:
                return False
            return search(node.left, l, node.val) and search(node.right, node.val, r)
        return search(root) 

http://www.kler.cn/a/513349.html

相关文章:

  • 港口危货储存单位生产管理人员题库附答案
  • win32汇编环境,对多行编辑框添加或删除文本
  • 如何使用CRM数据分析优化销售和客户关系?
  • Tcl教程
  • Python----Python高级(文件操作open,os模块对于文件操作,shutil模块 )
  • Windows FileZila Server共享电脑文件夹 映射21端口外网连接
  • 【力扣:新动计划,编程入门 —— 题解 ①】
  • 重学SpringBoot3-WebClient配置与使用详解
  • Spring Boot 中的 InitializingBean:Bean 初始化背后的故事
  • 2025年前端面试题汇总
  • 深度解析:CentOS 系统的硬件资源优化技巧
  • IoTDB Pipe 数据同步提示内存不足,如何调整
  • 亚博microros小车-原生ubuntu支持系列:2-摄像头控制
  • 小型分布式发电项目优化设计方案
  • SD换脸插件Reactor的安装教程
  • Kotlin 2.1.0 入门教程(三)
  • 使用插件SlideVerify实现滑块验证
  • 每日一题洛谷P2669 [NOIP2015 普及组] 金币c++
  • 使用 Babylon.js 开发时如何通过 CSS 实现 UI 自适应
  • 算法竞赛之差分进阶——等差数列差分 python
  • 【Pytest】基础到高级功能的理解使用
  • AI时代:安全的新挑战与新机遇
  • colmap ninja 时遇到undefined reference to `TIFFFieldTag@LIBTIFF_4.0‘错误
  • vite共享选项之---css.preprocessorOptions
  • mac 安装 python2
  • 【Knife4j与Swagger的区别是什么?】