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

力扣 hot100 Day44

98. 验证二叉搜索树

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

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

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

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

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

//自己写的
class Solution {
public:void inorderHelper(TreeNode* root, vector<int>& result) {if (root == nullptr) return;inorderHelper(root->left, result);result.push_back(root->val);inorderHelper(root->right, result);}bool isValidBST(TreeNode* root) {vector<int> res;inorderHelper(root, res);for (int i = 1; i < res.size(); i++) {if (res[i] <= res[i-1]) {return false;}}return true;}
};

最直接的想法,按中序遍历排序,如果严格升序,就符合要求,能顺利实现

//抄的
class Solution {
public:bool isValidBST(TreeNode* root) {return helper(root, LONG_MIN, LONG_MAX);}bool helper(TreeNode* node, long min_val, long max_val) {if (!node) return true;if (node->val <= min_val || node->val >= max_val) {return false;}return helper(node->left, min_val, node->val) && helper(node->right, node->val, max_val);}
};

递归做法,需要保证整个左节点树都小于根节点,右节点大于根节点,所以需要传递两个极值作为范围。

http://www.xdnf.cn/news/1122247.html

相关文章:

  • 判断端口处于监听状态的方法
  • day40 训练和测试的规范写法
  • 手滑误操作? vue + Element UI 封装二次确认框 | 附源码
  • ThinkPHP 8 在 Apache 下启用伪静态
  • 机器学习(ML)、深度学习(DL)、强化学习(RL):人工智能的三驾马车
  • Spring的`@Value`注解使用详细说明
  • 企业培训笔记:axios 发送 ajax 请求
  • 2025/7/14——java学习总结
  • Linux多进程
  • React源码3:update、fiber.updateQueue对象数据结构和updateContainer()中enqueueUpdate()阶段
  • 从0到1实现Shell!Linux进程程序替换详解
  • Java项目:基于SSM框架实现的高校毕业选题管理系统【ssm+B/S架构+源码+数据库+毕业论文】
  • 0-1 BFS :双端队列+动态规划 LCP 56. 信物传送
  • IoC容器深度解析:架构、原理与实现
  • 11.设置 Python 3 和 pip 3 为默认版本
  • JVM监控及诊断工具-命令行篇
  • 认识下计算机视觉中的人脸识别
  • SpringMVC1
  • 技能升级--二分例题
  • 新手向:Python自动化办公批量重命名与整理文件系统
  • ECUs、ZCUs、CCUs:产生的软件栈(SW stack)也有所不同
  • 事物生效,订单类内部更新订单
  • MFC/C++语言怎么比较CString类型最后一个字符
  • gitignore添加后如何生效?
  • Spark 单机模式安装与测试全攻略​
  • 考完数通,能转云计算/安全方向吗?转型路径与拓展路线分析
  • ThreadLocal结构
  • windows11系统安装nginx1.28.0
  • 【无标题】11维模型几何引擎拓扑量子计算机的推想
  • 【C++篇】:告别手动内存管理!——C++智能指针的快速上手指南