news 2026/7/24 15:46:41

【 每天学习一点算法 2025/12/17】验证二叉搜索树

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【 每天学习一点算法 2025/12/17】验证二叉搜索树

每天学习一点算法 2025/12/17

验证二叉搜索树

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

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

节点的左子树只包含 小于 当前节点的数。

节点的右子树只包含 大于 当前节点的数。

所有左子树和右子树自身必须也是二叉搜索树。

  1. 根据题目描述可以知道二叉搜索树,使用中序遍历的结果数组一定是升序,也就是每一次遍历的节点值都比之前的大,我们只需要在遍历过程比较一下当前节点值是否符合要求即可。

    functionisValidBST(root:TreeNode|null):boolean{constresult:number[]=[]// 用于存储遍历值// 为了避免result全局污染添加一个辅助函数functionvalidate(node:TreeNode|null):boolean{if(node===null)returntrue;// 初始默认为有效搜索二叉树// 提前中断已经无效的情况if(!validate(node.left)){returnfalse}// 判断当前节点是否符合二叉搜索树特征if(result.filter(item=>item>=node.val).length>0)returnfalseresult.push(node.val)// 提前中断已经无效的情况if(!validate(node.right)){returnfalse}returntrue}// 调用辅助函数returnvalidate(root);};
  2. 之前的二叉树相关的题我们也提到了递归的每次一层的root其实就是当前子树的根节点,我们只需要在每一层的遍历中判断当前节点的值和子节点的大小关系即可知道这是否是有效的二叉搜索树。

    functionisValidBST(root:TreeNode|null):boolean{// 辅助函数,增加上下界参数functionvalidate(node:TreeNode|null,lower:number,upper:number):boolean{if(node===null)returntrue;// 终止时无超出上下界的结果为有效// 检查当前节点值是否超出上下界if(node.val<=lower||node.val>=upper){returnfalse;}// 递归检查左子树和右子树returnvalidate(node.left,lower,node.val)&&validate(node.right,node.val,upper);}// 调用辅助函数,初始上下界为负无穷到正无穷returnvalidate(root,-Infinity,Infinity);};

题目来源:力扣(LeetCode)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/20 16:10:29

Docker中调试Vercel AI SDK的3个隐藏技巧,90%开发者都不知道

第一章&#xff1a;Docker中调试Vercel AI SDK的核心挑战在容器化环境中使用 Vercel AI SDK 时&#xff0c;开发者常面临运行时依赖缺失、网络隔离和日志输出受限等问题。由于 Docker 容器默认以最小化镜像构建&#xff0c;缺少必要的调试工具链&#xff0c;使得传统本地调试手…

作者头像 李华
网站建设 2026/7/23 1:23:12

VSCode + Qiskit 环境配置验证全攻略(从零到运行仅需8分钟)

第一章&#xff1a;VSCode Qiskit 的配置验证在完成 VSCode 与 Qiskit 环境的初步搭建后&#xff0c;必须对配置进行系统性验证&#xff0c;以确保开发环境能够正确执行量子计算任务。验证过程涵盖 Python 解释器选择、Qiskit 库导入测试以及简单量子电路的运行。Python 与 Qis…

作者头像 李华
网站建设 2026/7/23 21:02:09

语雀文档备份完整指南:5分钟学会离线文档制作

语雀文档备份完整指南&#xff1a;5分钟学会离线文档制作 【免费下载链接】yuque2book export yuque repo to a book 将你的语雀文档导出的工具 项目地址: https://gitcode.com/gh_mirrors/yu/yuque2book 还在担心语雀文档丢失或无法离线查看吗&#xff1f;yuque2book工…

作者头像 李华
网站建设 2026/7/20 13:01:51

LinearDesign深度解析:5大核心优势助力mRNA序列优化革命

LinearDesign深度解析&#xff1a;5大核心优势助力mRNA序列优化革命 【免费下载链接】LinearDesign The LinearDesign mRNA design software. 项目地址: https://gitcode.com/gh_mirrors/li/LinearDesign LinearDesign作为百度研究院开发的创新mRNA设计软件&#xff0c;…

作者头像 李华
网站建设 2026/7/23 9:41:53

Docker Offload任务分配实战精要(附高并发场景调优案例)

第一章&#xff1a;Docker Offload任务分配的核心概念Docker Offload 是一种优化容器资源调度的机制&#xff0c;旨在将特定任务从主机卸载到专用执行环境&#xff0c;从而提升整体系统性能与资源利用率。该机制广泛应用于边缘计算、异构硬件协同和高性能计算场景中。任务卸载的…

作者头像 李华
网站建设 2026/7/21 3:35:19

窗口置顶功能:打造高效多任务工作环境

窗口置顶功能&#xff1a;打造高效多任务工作环境 【免费下载链接】pinwin .NET clone of DeskPins software 项目地址: https://gitcode.com/gh_mirrors/pi/pinwin 你是否曾经在繁重的多任务处理中感到力不从心&#xff1f;&#x1f629; 参考资料被层层窗口淹没&#…

作者头像 李华