题目链接:力扣

思路

递归

递归函数声明

bool isValidBST(TreeNode* root,int lower,int upper);//判断根节点是否在lower和upper之间

递归出口:

如果只有根节点,返回真

如果根节点小于等于下界,或者大于等于上界,返回假

递归体:

递归判断左子树范围是否在(lower,root->val),

右子树范围是否在(root->val,upper)

初始时传入参数(-INF,INF)

代码:

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

思路2:

利用二叉搜索树的性质:中序遍历递增

class Solution {
public:bool isValidBST(TreeNode* root) {stack<TreeNode*> stack;long long inorder = (long long)INT_MIN - 1;while (!stack.empty() || root != nullptr) {while (root != nullptr) {stack.push(root);root = root -> left;}root = stack.top();stack.pop();// 如果中序遍历得到的节点的值小于等于前一个 inorder,说明不是二叉搜索树if (root -> val <= inorder) {return false;}inorder = root -> val;root = root -> right;}return true;}
};

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

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

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

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

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

  3. leetcode —— 98. 验证二叉搜索树

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

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

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

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

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

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

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

  7. leetcode - 98. 验证二叉搜索树

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

  8. LeetCode 98. 验证二叉搜索树(递归)(迭代)

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

  9. Leetcode 98. 验证二叉搜索树 解题思路及C++实现

    解题思路: 分别验证root的左右子树是否是二叉树,同时,左子树的最大值要小于root->val,右子树的最小值要大于root->val. 在左右子树中,一直向root的左子树探索,就能得 ...

最新文章

  1. 阅读Book: MultiObjective using Evolutionary Algorithms (4) --- 3 种方法find Non-dominated set
  2. 如何快速学会别人的代码和思维
  3. python-- Image 模块
  4. CentOS7 搭建GIT环境
  5. 【Python3 爬虫】03_urllib.error异常处理
  6. 如何利用LabelImg将标注文件在YOLO格式与PascalVOC格式间相互转换
  7. LCD显示深究day01 mmap知识补充
  8. 极客无极限 一行HTML5代码引发的创意大爆炸
  9. Java实现二分查找算法
  10. 实验五 单表查询(V2.0版)
  11. C语言之数组和指针位移的本质(四十五)
  12. ice服务器能修复吗,系统进不去怎么办?教你利用bootice工具引导修复系统
  13. win7安装wincc信息服务器不可用,Win7安装WinCC的方法
  14. 适合智能电视的K歌神器,纯麦U7PRO麦克风体验
  15. python操作 e'xcel表格
  16. 360评估应用的6大场景
  17. php上传文件失败解决方案
  18. Airtest  入门
  19. C语言除法哪个是整除,c语言整除(c语言整除怎么表示)
  20. shp转.osm.pbf

热门文章

  1. ICPC程序设计题解系列
  2. Go语言程序的数组初始化
  3. NUC1214 回文素数【回文+素数】
  4. UNIX 环境高级编程(一) apue.h 文件与apue.3e的安装
  5. Scala 集合 —— Array、Map、Seq、Set
  6. python汉字排序规则_根据规则对python中的列表进行排序
  7. python使用-Python3 错误和异常
  8. python画折线图-手把手教你Python yLab的绘制折线图的画法
  9. python人门指南小说-Python入门深度学习完整指南
  10. python 计算机程序设计-计算机二级教程python第一章 程序设计语言