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

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

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

示例 1:

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

做这题很容易有误区:BST 不是左小右大么,那我只要检查 root.val > root.left.valroot.val < root.right.val 不就行了?

这样是不对的,因为 BST 左小右大的特性是指 root.val 要比左子树的所有节点都更大,要比右子树的所有节点都小,你只检查左右两个子节点当然是不够的。

正确解法是通过使用辅助函数,增加函数参数列表,在参数中携带额外信息,将这种约束传递给子树的所有节点,这也是二叉搜索树算法的一个小技巧吧。

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

98.验证二叉搜索树相关推荐

  1. 【LeetCode】【HOT】98. 验证二叉搜索树(递归)

    [LeetCode][HOT]98. 验证二叉搜索树 文章目录 [LeetCode][HOT]98. 验证二叉搜索树 package hot;class TreeNode{int val;TreeNo ...

  2. Leetcode 98:验证二叉搜索树

    Leetcode 98:验证二叉搜索树 题目描述 我的解法:非递归的中序遍历 其它解法1:非递归的中序遍历,用LONG_MIN规避树的val等于INT_MIN的情况 其他解法2:递归的中序遍历思想 其 ...

  3. 173. 二叉搜索树迭代器/94. 二叉树的中序遍历/145. 二叉树的后序遍历/98. 验证二叉搜索树

    2020-05-12 1.题目描述 二叉搜索树迭代器 2.题解 对于二叉搜索树而言,进行中序遍历就可以得到其有序序列,我们可以先对树进行遍历,将结果保存在 vector中,然后进行计算即可. 3.代码 ...

  4. 【Leetcode】98. 验证二叉搜索树

    题目 给定一个二叉树,判断其是否是一个有效的二叉搜索树. 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数. 节点的右子树只包含大于当前节点的数. 所有左子树和右子树自身必须也是二 ...

  5. leetcode 98. 验证二叉搜索树 递归遍历左右子树和中序遍历 c语言解法

    如题: 给定一个二叉树,判断其是否是一个有效的二叉搜索树. 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数. 节点的右子树只包含大于当前节点的数. 所有左子树和右子树自身必须也是 ...

  6. Leetcode 98. 验证二叉搜索树 (每日一题 20210810)

    给定一个二叉树,判断其是否是一个有效的二叉搜索树.假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数. 节点的右子树只包含大于当前节点的数. 所有左子树和右子树自身必须也是二叉搜索树. ...

  7. [Leetcode总结] 98.验证二叉搜索树

    给定一个二叉树,判断其是否是一个有效的二叉搜索树. 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数. 节点的右子树只包含大于当前节点的数. 所有左子树和右子树自身必须也是二叉搜索 ...

  8. LeetCode 98. 验证二叉搜索树 思考分析

    题目 给定一个二叉树,判断其是否是一个有效的二叉搜索树. 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数. 节点的右子树只包含大于当前节点的数. 所有左子树和右子树自身必须也是二 ...

  9. LeetCode 98. 验证二叉搜索树(中序遍历)

    文章目录 1. 题目信息 2. 解题 2.1 递归中序 2.2 非递归中序 1. 题目信息 给定一个二叉树,判断其是否是一个有效的二叉搜索树. 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于 ...

  10. 【LeetCode笔记】98. 验证二叉搜索树(Java、dfs、中序遍历、二叉树)

    文章目录 题目描述 代码 & 思路 题目描述 二叉搜索树,应该满足中序遍历的结果是按顺序的. 比如例1是1,2,3:而例二是1,5,3,4,6,是错的 代码 & 思路 就是中序遍历 + ...

最新文章

  1. HDU2167 Pebbles(状压DP)
  2. java其他进程,Java进程优先于其他Windows进程
  3. VS2019以及MFC的安装(详细)
  4. 阶段3 1.Mybatis_10.JNDI扩展知识_1 补充-JNDI概述和原理
  5. 最新软件库iAPP源码+整套独立后台/前端后端
  6. 远程传输文件--java文件流
  7. 电商系统开发之产品订单分拆设计技术思路
  8. 抖音直播间弹幕发言采集工具
  9. 汽车行业数字化工厂建设方案
  10. 笔记本电脑计算机无法显示u盘,小编告诉你为什么笔记本电脑识别不了u盘
  11. @property python知乎_知乎某处XSS+刷粉超详细漏洞技术分析
  12. jquery日历插件daterangepicker全面详解汇总
  13. 如何第一次办理港澳通行证、护照、台湾通行证
  14. mysql查询除某一列外的其他列
  15. android 8.0动态申请读写权限
  16. 案例 | 深入了解捷尼赛思GV60的数字座舱
  17. spring调用切面失效分析(类内调用自身切面方法或其他切面方法失效)
  18. IIS6中Rewrite扩展模块安装与设置
  19. java数字转换MB,GB
  20. CRM代表什么?需要CRM软件的7个理由

热门文章

  1. 4.2 SE38数据对象
  2. 专升本c语言名词解释题_专升本到底难不难?
  3. argument type mismatch怎么解决_怎么做好GMAT 的CR?
  4. OpenCV中基本数据结构(7)_Vec
  5. Window下更新python pip源
  6. 浅谈opencl之整体框架
  7. 一维卷积神经网络、卷积神经网络的基础知识
  8. Kafka单节点多broker的部署和使用
  9. Scala里Map()集合
  10. HbuliderX 历史版本下载