LeetCode 98. 验证二叉搜索树(中序遍历)
文章目录
- 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. 验证二叉搜索树(中序遍历)相关推荐
- Leetcode 98:验证二叉搜索树
Leetcode 98:验证二叉搜索树 题目描述 我的解法:非递归的中序遍历 其它解法1:非递归的中序遍历,用LONG_MIN规避树的val等于INT_MIN的情况 其他解法2:递归的中序遍历思想 其 ...
- [Leetcode][第99题][JAVA][恢复二叉搜索树][中序遍历]
[问题描述][困难] [解答思路] 1. 显示中序遍历 时间复杂度:O(N) 空间复杂度:O(N) class Solution {public void recoverTree(TreeNode r ...
- leetcode 98. 验证二叉搜索树 递归遍历左右子树和中序遍历 c语言解法
如题: 给定一个二叉树,判断其是否是一个有效的二叉搜索树. 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数. 节点的右子树只包含大于当前节点的数. 所有左子树和右子树自身必须也是 ...
- leetcode —— 98. 验证二叉搜索树
给定一个二叉树,判断其是否是一个有效的二叉搜索树. 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数. 节点的右子树只包含大于当前节点的数. 所有左子树和右子树自身必须也是二叉搜索 ...
- LeetCode 98 验证二叉搜索树
题目链接:力扣 思路 递归 递归函数声明 bool isValidBST(TreeNode* root,int lower,int upper);//判断根节点是否在lower和upper之间 递归出 ...
- 74. Leetcode 501. 二叉搜索树中的众数 (二叉搜索树-中序遍历类)
给你一个含重复值的二叉搜索树(BST)的根节点 root ,找出并返回 BST 中的所有 众数(即,出现频率最高的元素).如果树中有不止一个众数,可以按 任意顺序 返回.假定 BST 满足如下定义:结 ...
- 73. Leetcode 230. 二叉搜索树中第K小的元素 (二叉搜索树-中序遍历类)
给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数).示例 1:输入:root = [3,1,4,null,2], k = 1 输出 ...
- 72. Leetcode 99. 恢复二叉搜索树 (二叉搜索树-中序遍历类)
给你二叉搜索树的根节点 root ,该树中的 恰好 两个节点的值被错误地交换.请在不改变其结构的情况下,恢复这棵树 .示例 1:输入:root = [1,3,null,null,2] 输出:[3,1, ...
- LeetCode 98. 验证二叉搜索树 思考分析
题目 给定一个二叉树,判断其是否是一个有效的二叉搜索树. 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数. 节点的右子树只包含大于当前节点的数. 所有左子树和右子树自身必须也是二 ...
最新文章
- Java项目:前后端分离网上手机商城平台系统设计和实现(java+vue+redis+springboot+mysql+ssm)
- [hive] hive 内部表和外部表
- 剑灵选区界面一直正在连接服务器,如何选择服务器 选择困难症的指南
- MyBatis Review——输入输出映射
- 2021-春季学习-智能车技术创新与实践-Lesson2
- python项目-2019年5月GitHub上热门的Python项目
- 《Pro ASP.NET MVC 3 Framework》学习笔记之二十七【视图1】
- 随着计算机网络的广泛应用,【网络技术论文】计算机网络技术的广泛应用探析(共3558字)...
- 曹大带我学 Go(10)—— 如何给 Go 提性能优化的 pr
- React-引领未来的用户界面开发框架-读书笔记(二)
- cks32和stm32_cks子,间谍,局部Mo子和短管
- Linux 建立文件夹的链接
- 零基础到底适不适合转行前端?
- Activity onSaveInstanceState(Bundle)
- linux内核移植imx8,NXP iMX8 Ubuntu 系统移植及 ROS 应用
- chrome 自动操纵谷歌小恐龙
- MATLAB中对于矩阵的算术运算、关系运算、逻辑运算、转置、求逆、求和和求积
- 测试技术总监需要具备哪些能力
- C# winform 自定义控件配置代码 多显示 换行
- OkHttp证书校验
热门文章
- ftp服务器上传文件权限设置,ftp服务器 上传文件权限设置
- 球星测试软件,2KOL球星测评丨篮球之神,迈克尔.乔丹(96版)
- win10商店下载位置_Win10删应用商店下载记录|Win10删Microsoft Store下载记录
- [转]命令行在IIS添加虚拟目录
- 天猫11.11:搜索引擎实时秒级更新(转载)
- Leetcode389
- 常量(const)和只读变量(readonly)
- [css][移动设备]禁止横竖屏时内容自动调整
- std::unique_ptr<T>与boost::scoped_ptr<T>的特殊性
- linux下unix timestamp 与 可视化时间/常规时间进行转换