文章目录

  • 1. 题目信息
  • 2. 解题
    • 2.1 递归中序
    • 2.2 非递归中序

1. 题目信息

给定一个二叉树,判断其是否是一个有效的二叉搜索树

假设一个二叉搜索树具有如下特征:

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

示例 1:输入:2/ \1   3
输出: true
示例 2:输入:5/ \1   4/ \3   6
输出: false
解释: 输入为: [5,1,4,null,null,3,6]。根节点的值为 5 ,但是其右子节点值为 4 。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/validate-binary-search-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

2.1 递归中序

  • 二叉搜索树的中序(左根右)输出是非降序列(不能相等的话,是升序的)。

class Solution {public:bool isValidBST(TreeNode* root) {if(!root)return true;long prev = INT64_MIN;bool valid = true;isValid(root, prev, valid);return valid;}void isValid(TreeNode* root, long &prev, bool &valid){if(!valid || !root)return;isValid(root->left, prev, valid);if(valid)valid = (root->val > prev);prev = root->val;isValid(root->right, prev, valid);}
};

2.2 非递归中序

利用栈递归改循环

class Solution {public:bool isValidBST(TreeNode* root) {if(!root)return true;long prev = INT64_MIN;bool valid = true;stack<TreeNode*> stk;TreeNode *cur = root;while(cur != NULL || !stk.empty()){while(cur != NULL){stk.push(cur);cur = cur->left;}cur = stk.top();stk.pop();if(cur->val <= prev)return false;prev = cur->val;cur = cur->right;}return valid;}
};

LeetCode 98. 验证二叉搜索树(中序遍历)相关推荐

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

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

  2. [Leetcode][第99题][JAVA][恢复二叉搜索树][中序遍历]

    [问题描述][困难] [解答思路] 1. 显示中序遍历 时间复杂度:O(N) 空间复杂度:O(N) class Solution {public void recoverTree(TreeNode r ...

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

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

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

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

  5. LeetCode 98 验证二叉搜索树

    题目链接:力扣 思路 递归 递归函数声明 bool isValidBST(TreeNode* root,int lower,int upper);//判断根节点是否在lower和upper之间 递归出 ...

  6. 74. Leetcode 501. 二叉搜索树中的众数 (二叉搜索树-中序遍历类)

    给你一个含重复值的二叉搜索树(BST)的根节点 root ,找出并返回 BST 中的所有 众数(即,出现频率最高的元素).如果树中有不止一个众数,可以按 任意顺序 返回.假定 BST 满足如下定义:结 ...

  7. 73. Leetcode 230. 二叉搜索树中第K小的元素 (二叉搜索树-中序遍历类)

    给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数).示例 1:输入:root = [3,1,4,null,2], k = 1 输出 ...

  8. 72. Leetcode 99. 恢复二叉搜索树 (二叉搜索树-中序遍历类)

    给你二叉搜索树的根节点 root ,该树中的 恰好 两个节点的值被错误地交换.请在不改变其结构的情况下,恢复这棵树 .示例 1:输入:root = [1,3,null,null,2] 输出:[3,1, ...

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

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

最新文章

  1. Java项目:前后端分离网上手机商城平台系统设计和实现(java+vue+redis+springboot+mysql+ssm)
  2. [hive] hive 内部表和外部表
  3. 剑灵选区界面一直正在连接服务器,如何选择服务器 选择困难症的指南
  4. MyBatis Review——输入输出映射
  5. 2021-春季学习-智能车技术创新与实践-Lesson2
  6. python项目-2019年5月GitHub上热门的Python项目
  7. 《Pro ASP.NET MVC 3 Framework》学习笔记之二十七【视图1】
  8. 随着计算机网络的广泛应用,【网络技术论文】计算机网络技术的广泛应用探析(共3558字)...
  9. 曹大带我学 Go(10)—— 如何给 Go 提性能优化的 pr
  10. React-引领未来的用户界面开发框架-读书笔记(二)
  11. cks32和stm32_cks子,间谍,局部Mo子和短管
  12. Linux 建立文件夹的链接
  13. 零基础到底适不适合转行前端?
  14. Activity onSaveInstanceState(Bundle)
  15. linux内核移植imx8,NXP iMX8 Ubuntu 系统移植及 ROS 应用
  16. chrome 自动操纵谷歌小恐龙
  17. MATLAB中对于矩阵的算术运算、关系运算、逻辑运算、转置、求逆、求和和求积
  18. 测试技术总监需要具备哪些能力
  19. C# winform 自定义控件配置代码 多显示 换行
  20. OkHttp证书校验

热门文章

  1. ftp服务器上传文件权限设置,ftp服务器 上传文件权限设置
  2. 球星测试软件,2KOL球星测评丨篮球之神,迈克尔.乔丹(96版)
  3. win10商店下载位置_Win10删应用商店下载记录|Win10删Microsoft Store下载记录
  4. [转]命令行在IIS添加虚拟目录
  5. 天猫11.11:搜索引擎实时秒级更新(转载)
  6. Leetcode389
  7. 常量(const)和只读变量(readonly)
  8. [css][移动设备]禁止横竖屏时内容自动调整
  9. std::unique_ptr<T>与boost::scoped_ptr<T>的特殊性
  10. linux下unix timestamp 与 可视化时间/常规时间进行转换