news 2026/5/1 6:57:43

【 每天学习一点算法 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/4/30 15:22:20

阿里云OSS文件上传案例

OSS 文件上传流程详解以下是基于提供代码实现的 OSS 文件上传完整流程&#xff0c;包含配置、核心代码及步骤说明&#xff1a;一、前期准备阿里云 OSS 配置需在阿里云控制台创建 Bucket&#xff0c;获取endpoint、accessKeyId、accessKeySecret和bucketName配置文件位置&#x…

作者头像 李华
网站建设 2026/5/1 6:55:06

JSZip实战指南:5个常见错误场景与解决方案

JSZip实战指南&#xff1a;5个常见错误场景与解决方案 【免费下载链接】jszip Create, read and edit .zip files with Javascript 项目地址: https://gitcode.com/gh_mirrors/js/jszip 你是否曾在处理ZIP文件时遇到过这样的困扰&#xff1a;用户上传的文件无法正常打开…

作者头像 李华
网站建设 2026/4/27 10:59:49

终极指南:5款开源macOS窗口管理神器推荐

终极指南&#xff1a;5款开源macOS窗口管理神器推荐 【免费下载链接】open-source-mac-os-apps serhii-londar/open-source-mac-os-apps: 是一个收集了众多开源 macOS 应用程序的仓库&#xff0c;这些应用程序涉及到各种领域&#xff0c;例如编程、生产力工具、游戏等。对于开发…

作者头像 李华
网站建设 2026/4/30 0:57:57

入门篇--Python篇-3-为什么做AI开发首选Python,而不是Java或C++?

作者&#xff1a;Weisian AI探索者 软件工程师 写给每一个想入行AI的你 哈喽&#xff0c;各位技术小伙伴&#xff5e; 最近后台好多刚入门AI的同学问我&#xff1a;“想做AI开发&#xff0c;先学Python、Java还是C呢&#xff1f;” 其实答案很明确——90%的AI开发场景&#x…

作者头像 李华