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

98. 验证二叉搜索树

       

        题目要求判断给定的二叉树是否为二叉搜索树。

        二叉搜索树的定义如下:

  1. 节点的左子树仅包含小于当前节点的数值;
  2. 节点的右子树仅包含大于当前节点的数值;
  3. 左子树和右子树本身也必须满足二叉搜索树的条件。

        二叉树的左右子树与整棵树具有相似的结构特征,这种特性自然地将问题分解为若干子问题。在判断一棵树是否为二叉搜索树时,我们可以先分别判断其子树是否符合二叉搜索树的定义。根据二叉搜索树的性质,可以通过节点值的大小关系进行判断:首先检查左子树,然后比较当前节点值与前一节点值,最后检查右子树。这种遍历方式被称为中序遍历。

        代码:

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

        时间复杂度:O(n),每个节点都会遍历一次

        空间复杂度:O(n),最坏情况下,树退化成链 

        换种角度看问题,是否可以先判断节点,在判断左右子树呢?可以。

       

该图表明,当前根节点的取值范围由其父节点或祖父节点的取值决定。例如

                ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​

        2的取值范围为(-∞, 5],4的取值范围为[2, 5]。特别需要注意的是,整棵树的根节点5没有父节点,因此其取值范围为(-∞, +∞)。这种先访问节点值,再递归遍历左右子树的遍历方式称为前序遍历。

算法步骤如下:

  1. 判断根节点的值是否在当前取值范围内
  2. 遍历左子树,将右边界更新为当前根节点的值
  3. 遍历右子树,将左边界更新为当前根节点的值

        代码:

        

class Solution {
public:bool isValidBST(TreeNode* root,long long left = LLONG_MIN,long long right = LLONG_MAX) {if (!root) return true;long long x = root->val;return left < x && x < right && isValidBST(root->left,left,x) && isValidBST(root->right,x,right);}
};

        时间复杂度,空间复杂度与中序一致 

相关文章:

  • 如何优化关键词长度:2025年SEO实用指南
  • 软件设计师考试《综合知识》创建型设计模式考点分析
  • SAP HCM 0008数据存储逻辑
  • 电池的充放电电流中C的含义
  • 【SpringBoot】关于MP使用中配置了数据库表前缀的问题
  • 在宝塔中使用.NET环境管理部署 .NET Core项目
  • 生产级编排AI工作流套件:Flyte全面使用指南 — Development cycle
  • mysql中limit深度分页详细剖析【爽文】
  • 架构师论文《论模型驱动架构软件开发方法及其应用》
  • 【软件测试】性能测试 —— 工具篇 LoadRunner 介绍与使用
  • Ansible模块——服务管理和设置定时任务
  • 一字典两世界:优雅移除 `NSDictionary` 指定键的最佳实践
  • 腾讯 CodeBuddy 杀入 AI 编程赛道,能否撼动海外工具霸主地位?
  • C++类与对象--2 对象的初始化和清理
  • tp5 关键词搜索商品时进行关键词拆分
  • [Linux]我在Linux世界觉醒了指令系统
  • JavaScript基础-创建对象的三种方式
  • 【C++重载操作符与转换】文本查询示例
  • 数据库故障排查指南:解决常见问题,保障数据安全与稳定
  • 数据分析_Python
  • 香港特区政府强烈谴责美参议员恐吓国安人员
  • 101岁陕西省军区原司令员冀廷璧逝世,曾参加百团大战
  • “GoFun出行”订单时隔7年扣费后续:平台将退费,双方已和解
  • 自强!助残!全国200个集体和260名个人受到表彰
  • 央视起底“字画竞拍”网络传销案:涉案44亿元,受害者众多
  • 董军同德国国防部长举行会谈