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

Hot-98 验证二叉搜索树

1、解法1递归返回时向上返回子树的最大值和最小值# Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right class Solution: def isValidBST(self, root: Optional[TreeNode]) - bool: # 递归判断 self.flag True # 不对需要一路记录祖先节点中的最大值和最小值而且需要递归的时候向上返回 def dfs(Node): if not Node: return None,None if Node.left: left_max,left_min dfs(Node.left) # 返回左子树中的最大值和最小值 # 先和当前节点的val与max做判断 if left_max ! None and left_max Node.val: self.flag False # 更新并且返回上一层 left_Node_max max(left_max,Node.val) left_Node_min min(left_min,Node.val) if Node.right: right_max,right_min dfs(Node.right) if right_min ! None and right_min Node.val: self.flag False right_Node_max max(right_max,Node.val) right_Node_min min(right_min,Node.val) if Node.leftNone and Node.rightNone: return Node.val,Node.val elif Node.left!None and Node.rightNone: return left_Node_max,left_Node_min elif Node.leftNone and Node.right!None: return right_Node_max,right_Node_min else: return max(left_Node_max,right_Node_max),min(left_Node_min,right_Node_min) dfs(root) return self.flag2、解法2如果能够设置inf和-inf的话也可以自顶向下from typing import Optional class Solution: def isValidBST(self, root: Optional[TreeNode]) - bool: def dfs(node, lower, upper): if not node: return True # 当前节点的值必须在 (lower, upper) 范围内 if node.val lower or node.val upper: return False # 左子树上限变为当前节点值 # 右子树下限变为当前节点值 return dfs(node.left, lower, node.val) and dfs(node.right, node.val, upper) return dfs(root, float(-inf), float(inf))
http://www.rkmt.cn/news/1413358.html

相关文章:

  • 从‘直男风’到‘规划思维’:深度解读用地分类演变及ArcGIS转换中的‘坑’
  • ST-STORM:解耦内容与风格的自监督视觉表示学习新范式
  • 2026上海废铝回收服务商评测:上海废铝废铝回收/上海金属回收/上海废铁回收/合规与性价比双维度对比 - 优质品牌商家
  • 2026年硬核亲测:10款降AIGC工具深度横评(附对比表) - 降AI小能手
  • 2026 年正规 MBTI 测试网站推荐 TOP8 中文正版无广告平台实测 - 资讯速览
  • 从“抽球”到“预测”:离散与连续概率模型在数据分析中的实战应用指南
  • 2026 边缘计算机型选哪个好?低功耗 NPU 机器人工控机推荐
  • 量子计算在微分方程求解中的硬件友好型算法设计
  • 如何构建智能四足机器人:openDogV2开源框架的5大核心技术模块解析
  • 如何在3分钟内掌握LOIC:开源网络压力测试工具的实战指南
  • 超自动化安全:实现安全运营现代化的关键
  • 福州高价回收爱马仕香奈儿 LV 添价收当场结算秒到账 - 薛定谔的梨花猫
  • Veo商业广告高效量产实战(从脚本到成片仅需48小时):头部品牌正在偷偷用的AI协同工作流
  • AI写专著技巧大公开:AI专著生成工具,高效完成20万字专著创作!
  • Flutter本地语音转文字实战:基于Vosk实现隐私保护与成本优化
  • STM32 USB开发中ARM_DRIVER_ERROR_PARAMETER错误解析与FIFO配置优化
  • 通过Taotoken用量看板直观比较不同模型在相同任务下的token消耗
  • 05-技术人出海(系列五-技术人产品力)
  • 保姆级教程:用JavaCV+FFmpeg+nginx-http-flv-module在Windows上搭建个人直播服务器
  • 从仿真到实物:手把手教你用ROS+Gazebo+MoveIt!搭建机械臂抓取仿真环境(含URDF配置与避坑指南)
  • UniXcoder架构解析:统一跨模态代码表示预训练模型深度实践
  • 2014-2025年各省各城市各县区逐年年度PM2.5面板数据
  • 数据库管理工具+开发工具的融合:AI如何重塑DBA工作流?
  • 山东省CPPM证书颁发机构是哪个?人社部认可的官方报考机构推荐 - 众智商学院课程中心
  • 5分钟搞定浏览器端音乐解密:Unlock-Music终极指南
  • 终极指南:如何从零构建开源四足机器人openDogV2
  • 实战演练:用Rust reqwest库模拟登录与抓取数据(POST带Header,JSON解析用Value)
  • 构建AI智能体专属数据平台:从数据仓库到语义化服务
  • 终极指南:如何用ViGEmBus驱动实现专业级游戏控制器仿真
  • 低成本DIY自适应控制器:用MakeyMakey与日常材料为特殊需求者赋能