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

做游戏代练网站展览公司

做游戏代练网站,展览公司,河北建设招标网,手机网站首页LeetCode 热题 100 | 98. 验证二叉搜索树 大家好,今天我们来解决一道经典的二叉树问题——验证二叉搜索树。这道题在 LeetCode 上被标记为中等难度,要求判断给定的二叉树是否是一个有效的二叉搜索树(BST)。 问题描述 给你一个二…

LeetCode 热题 100 | 98. 验证二叉搜索树

大家好,今天我们来解决一道经典的二叉树问题——验证二叉搜索树。这道题在 LeetCode 上被标记为中等难度,要求判断给定的二叉树是否是一个有效的二叉搜索树(BST)。


问题描述

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

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

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

示例 1:

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

示例 2:

输入:root = [5,1,4,null,null,3,6]
输出:false
解释:根节点的值是 5 ,但是右子节点的值是 4 。

提示:

  • 树中节点数目范围在 [1, 10^4]
  • -2^31 <= Node.val <= 2^31 - 1

解题思路

核心思想
  1. 递归验证

    • 使用递归方法,为每个节点维护一个取值范围 [min_val, max_val]
    • 对于根节点,其取值范围为 (-∞, +∞)
    • 对于左子树,更新上界为父节点的值;对于右子树,更新下界为父节点的值。
    • 如果某个节点的值超出其允许范围,则该树不是有效的二叉搜索树。
  2. 中序遍历

    • 二叉搜索树的中序遍历结果是一个严格递增的序列。
    • 在中序遍历过程中,维护一个全局变量 prev,记录前一个访问的节点值。
    • 如果当前节点值小于等于 prev,则该树不是有效的二叉搜索树。
递归验证方法
class Solution:def isValidBST(self, root: TreeNode) -> bool:def validate(node, low=float('-inf'), high=float('inf')):if not node:return Trueif not (low < node.val < high):return Falsereturn (validate(node.left, low, node.val) andvalidate(node.right, node.val, high))return validate(root)
中序遍历方法
class Solution:def isValidBST(self, root: TreeNode) -> bool:self.prev = float('-inf')def inorder_traversal(node):if not node:return Trueif not inorder_traversal(node.left):return Falseif node.val <= self.prev:return Falseself.prev = node.valreturn inorder_traversal(node.right)return inorder_traversal(root)

复杂度分析

  • 时间复杂度:O(n),其中 n 是树中节点的数量。每个节点恰好被访问一次。
  • 空间复杂度:O(h),其中 h 是树的高度。递归调用栈的深度最多为树的高度。

示例运行

示例 1
输入:root = [2,1,3]
输出:true
示例 2
输入:root = [5,1,4,null,null,3,6]
输出:false
解释:根节点的值是 5 ,但是右子节点的值是 4 。

总结

通过递归验证或中序遍历,我们可以高效地判断一个二叉树是否为有效的二叉搜索树。递归验证方法通过维护每个节点的取值范围来确保其符合BST的性质,而中序遍历方法则利用BST中序遍历结果为严格递增序列的特性。希望这篇题解对大家有所帮助,如果有任何问题,欢迎在评论区留言讨论!


文章转载自:

http://Dg78MvnW.dmtwz.cn
http://8eMkijs1.dmtwz.cn
http://HlErKAcu.dmtwz.cn
http://Wr59D3Ke.dmtwz.cn
http://35JGP3A8.dmtwz.cn
http://vD7zsZnO.dmtwz.cn
http://8nrnn5Yd.dmtwz.cn
http://wbn9W9ke.dmtwz.cn
http://uEx8ZpO0.dmtwz.cn
http://sNSOasP8.dmtwz.cn
http://o91Im3QH.dmtwz.cn
http://3o6xmDhC.dmtwz.cn
http://BWGcK2Yz.dmtwz.cn
http://KHylwpJk.dmtwz.cn
http://LY0etjEB.dmtwz.cn
http://rsCMs9JV.dmtwz.cn
http://XVc9gmdl.dmtwz.cn
http://L1GOBl7L.dmtwz.cn
http://P7Dqbo5F.dmtwz.cn
http://7dJqem1v.dmtwz.cn
http://VrY0p2Fg.dmtwz.cn
http://7zQFjvJm.dmtwz.cn
http://Y0j7FqyE.dmtwz.cn
http://tADe97tk.dmtwz.cn
http://PAMlekoR.dmtwz.cn
http://77c3zQAb.dmtwz.cn
http://AqNnDs0I.dmtwz.cn
http://w3ZmctN8.dmtwz.cn
http://rP6UcWwP.dmtwz.cn
http://ajhCA2AR.dmtwz.cn
http://www.dtcms.com/wzjs/731522.html

相关文章:

  • 凡科网怎么修改网站电子商务网站登录
  • 网站怎么做404页面网页翻译失败
  • 营销网站费用好看的网站建设公司
  • 大型外贸网站建设沈阳专业seo排名优化公司
  • 效益型网站山西山西省建设厅网站首页
  • js代码网站大全上海网站开发外包
  • ui设计和网站建设人员李伟宁建网站到底需要多少钱
  • 购物网站 服务器 带宽 多大中国城乡与住房建设部网站
  • 帮客户做传销网站邯郸哪里制作网站
  • 网站先做前端还是后端域名申请网站
  • 只做财经的网站海外网站建设公司
  • 端州网站建设公司wordpress伪静态301错误
  • 当年的51网站wordpress表格内容如何修改
  • 连江福州网站建设搜索各大网站
  • 网站建设费属于服务类么wordpress 导航 主题
  • 如何建设学校门户网站做ppt的网站兼职
  • 子午谷网站建设wordpress仿亿欧网
  • 页面设计排版网站温州建设信息网站
  • 域名手机网站源码上海重大新闻
  • 自助网站建设开发广州企业黄页大全
  • 手机如何做网站做网站为什么用php
  • 网站百度突然不收录了企业网站的一般要素包括
  • 做团购网站需要什么资质wordpress中文版和英文版区别
  • 企业信用信息公示系统广西湘潭seo优化
  • 手机网站设计机构网站建设与维护是什么内容?
  • SOHO英文网站制作最专业 汽车网站建设
  • 广告网站建设及推广做网络推广一个月多少钱
  • 网站的基本建设投资营口市住房建设保障办官方网站
  • 自学套模板做网站网页文件的扩展名
  • 个人做论坛网站要什么证件临湘建设局网站