力扣二叉树--第三十六天

前言

两天没写题了,期末月,压力有点大,休息一下,释放一下压力。焦虑常在,调整好心态啊!度过这一个月。写中序遍历的时候,发现自己竟然对树是怎么遍历的很模糊!!!前面那么多天怎么过来的!现在弄懂它,参考文章二叉树遍历的递归实现详解(先序、中序、后序和层次遍历)

内容

一、验证二叉搜索树

98. 验证二叉搜索树

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

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

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

陷阱:

不能单纯的比较左节点小于中间节点,右节点大于中间节点

我们要比较的是 左子树所有节点小于中间节点,右子树所有节点大于中间节点

Go 复制代码
func isValidBST(root *TreeNode)bool{
   return check(root,math.MinInt64,math.MaxInt64)
}
func check(root *TreeNode,min,max int)bool{
   if root==nil{
       return true
   }
   if root.Val>=max||root.Val<=min{
       return false
   }//检查当前节点的值是否在给定的最小值和最大值之间。如果不在,则返回 false,因为这表示当前树不是二叉搜索树。
   return check(root.Left,min,root.Val)&&check(root.Right,root.Val,max) //对于左子树,最小值保持不变,最大值变为当前节点的值,以确保左子树中的所有值都小于当前节点的值。对于右子树,最小值变为当前节点的值,最大值保持不变,以确保右子树中的所有值都大于当前节点的值。
}
中序遍历

中序遍历下,输出的二叉搜索树节点的数值是有序序列。

有了这个特性,验证二叉搜索树,就相当于变成了判断一个序列是不是递增的了。

Go 复制代码
func isValidBST(root *TreeNode)bool{
   res:= inorder(root)//res:= inorder(root) 调用 inorder 函数获取二叉树的中序遍历结果,并将其赋值给 res。
  for i:=0;i<len(res)-1;i++{
      if res[i]>=res[i+1]{
        return false
      }
        
  }

   return true 
}

  func inorder(node *TreeNode)[]int{
      
      if node==nil{
          return []int{}
      }
       res := inorder(node.Left)
    res = append(res, node.Val)
    res = append(res, inorder(node.Right)...)
    return res

  }

最后

今天就到这吧,不要再晚上八九点开始学习了,利用好白天的时间。

相关推荐
microrain7 小时前
从数据烟囱到融合中心:SagooIoT统一数据处理平台的设计实践
物联网·golang·开源·sagooiot
wabs6668 小时前
关于图论【卡码网117.软件构建的思考】
数据结构·算法·软件构建·图论·卡码网
mifengxing8 小时前
LeetCode 41.缺失的第一个正数|Hard题O(n)+O(1)最优解法深度解析
java·算法·leetcode·排序算法
Tongzhi20269 小时前
从部署到运维:通芝科技无感考勤一体机的全流程效率解析
运维·数据结构·科技·算法·贪心算法
Wang's Blog9 小时前
AI Agent白手起家30: 动态示例选择器之根据长度选择 Few Shot 示例
算法
DLYSB_10 小时前
API 网关流量洪峰与突发 CC 攻击:我用 Go 写了个“现场物理防御哨兵”,把故障响应压缩到秒级
开发语言·后端·golang·报警灯
oyguyteggytrrwwwrt11 小时前
自制交叉线路识别算法
算法
手写码匠11 小时前
华为云Flexus+DeepSeek征文|Dify 多智能体协同编排实战:R1 规划 + V3 执行,构建企业 Agent 团队
人工智能·深度学习·算法·aigc
城管不管11 小时前
第六次面试2026.8.5北京一面已OC
面试·职场和发展
晓天衡宇•评测社区12 小时前
FSR-Bench 前沿科学推理榜单发布:GPT-5.5 居首,“会推理”未必“能答对”
算法