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

LeetCode讲解篇之98. 验证二叉搜索树

文章目录

  • 题目描述
  • 题解思路
  • 题解代码
  • 题目链接

题目描述

在这里插入图片描述

题解思路

我们可以通过递归搜索的方式查询某棵树是不是二叉搜索树,二叉搜索树需要满足的最小值与最大值的约束并且左子树和右子树都是二叉搜索树或者当前节点为空,以当前节点为根节点的树才是二叉搜索树,否则不是二叉搜索树

题解代码

func isValidBST(root *TreeNode) bool {
    var f func(root *TreeNode, minVal, maxVal int) bool
    f = func(root *TreeNode, minVal, maxVal int) bool {
    	// 当前节点为空,表示是二叉搜索树
        if root == nil {
            return true
        }

		// 当前节点的值不满足当前二叉搜索树的最小值和最大值,表明不是二叉搜索树
        if root.Val <= minVal || root.Val >= maxVal {
            return false
        }

		// 递归查找左子树是否是二叉搜索树,其中左子树的二叉搜索树的最大值不能大于当前元素的值
		// 递归查找右子树是否是二叉搜索树,其中右子树的二叉搜索树的最小值不能小于当前元素的值
		// 只有当左子树和右子树都是二叉搜索树是,以当前节点为根节点的树才是二叉搜索树
        return f(root.Left, minVal, root.Val) && f(root.Right, root.Val, maxVal)
    }

	// 验证是否是二叉搜索树
    return f(root, math.MinInt64, math.MaxInt64)
}

题目链接

https://leetcode.cn/problems/validate-binary-search-tree/description/


http://www.kler.cn/news/334507.html

相关文章:

  • PCIe6.0 AIC金手指和板端CEM连接器信号完整性设计规范
  • Nexus制品库搭建(maven)
  • 汇编语言笔记2
  • java数据类型转换和注释
  • esp8266 at指令链接wifi时一直connect disconnest
  • 信号用wire类型还是reg类型定义
  • 2024年,现在做全职的AI产品经理,时机对不对?
  • VMware ESXi更改https的TLS协议版本
  • 植物叶片病害检测数据集 5100张 29类 带标注 voc yolo
  • 利用 Python 爬虫采集 1688商品详情
  • 【D3.js in Action 3 精译_028】3.4 小节 DIY 实战:使用 Observable 在线绘制 D3 条形图
  • 问:TCP长连接vs短连接有哪些差异?
  • Unity MVC框架演示 1-1 理论分析
  • VSCode python代码颜色调整与pycharm对齐
  • 项目-坦克大战笔记-墙体销毁以及人机销毁
  • vue-live2d看板娘集成方案设计使用教程
  • sqlalchemy 加速数据库操作
  • Uniapp API
  • 李飞飞谈AI+3D发展:3D/4D AI将成为下一个重要前沿
  • NVIDIA网卡系列之ConnectX-4规格信息(50G-PCIe 3.0x8-8PF256VF-2015年发布)