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

98. 验证二叉搜索树

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

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

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

示例 1:

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

示例 2:

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

提示:

  • 树中节点数目范围在[1, 104] 内
  • -231 <= Node.val <= 231 - 1

递归(通过形参改变取值范围):

class Solution {
public:bool func(TreeNode *root,long long lower,long long upper){if(root==nullptr)return true;if(root->val<=lower||root->val>=upper)return false;return func(root->left,lower,root->val)&&func(root->right,root->val,upper);}bool isValidBST(TreeNode* root) {return func(root,LONG_MIN,LONG_MAX);}
};

递归(中序遍历)(通过比较当前节点值和上一个节点值):

中序遍历是左中右的顺序,刚刚好搜索二叉树的特点是左<中<右。

class Solution {
public:TreeNode *pre=nullptr;bool isValidBST(TreeNode* root) {if(root==nullptr)return true;bool left=isValidBST(root->left);if(pre!=nullptr&&pre->val>=root->val)return false;pre=root;bool right=isValidBST(root->right);return left&&right;}
};

http://www.lryc.cn/news/157805.html

相关文章:

  • Stream API
  • 手写Spring:第3章-实现Bean的定义、注册、获取
  • 这些国外客户真直接
  • 使用Apache Doris自动同步整个 MySQL/Oracle 数据库进行数据分析
  • 【1++的数据结构】之哈希(一)
  • 【网络编程】深入了解UDP协议:快速数据传输的利器
  • WordPress(5)在主题中添加文章字数和预计阅读时间
  • STM32WB55开发(1)----套件概述
  • CUDA相关知识科普
  • 恒运资本:总市值和总资产区别?
  • CTF安全竞赛介绍
  • DC/DC开关电源学习笔记(四)开关电源电路主要器件及技术动态
  • 数据可视化与数字孪生:理解两者的区别
  • C++ socket编程(TCP)
  • ldd用于打印程序或库文件所依赖的共享库列表
  • vue+elementUI el-table实现单选
  • 前端组件库造轮子——Message组件开发教程
  • 单片机第二季:温度传感器DS18B20
  • 抓包工具fiddler的基础知识
  • 监控基本概念
  • 【数据结构】 七大排序详解(壹)——直接插入排序、希尔排序、选择排序、堆排序
  • 【Linux】高级IO --- Reactor网络IO设计模式
  • Agisoft Metashape相机标定笔记
  • vue-cropper在ie11下选择本地图片后,无显示、拒绝访问的问题
  • Excel VSTO开发11-自定义菜单项
  • stm32之30.DMA
  • 【LeetCode75】第四十九题 数组中的第K个最大元素
  • 嵌入式面试笔试刷题(day14)
  • 好用免费的Chat GPT(亲测有用)
  • SpringBoot项目--电脑商城【上传头像】