当前位置:网站首页>【LeetCode】98.验证二叉搜索树
【LeetCode】98.验证二叉搜索树
2022-08-04 10:50:00 【酥酥~】
题目
给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。
有效 二叉搜索树定义如下:
节点的左子树只包含 小于 当前节点的数。
节点的右子树只包含 大于 当前节点的数。
所有左子树和右子树自身必须也是二叉搜索树。
示例 1:
输入:root = [2,1,3]
输出:true
示例 2:
输入:root = [5,1,4,null,null,3,6]
输出:false
解释:根节点的值是 5 ,但是右子节点的值是 4 。
提示:
树中节点数目范围在[1, 104] 内
-231 <= Node.val <= 231 - 1
题解
递归方法,记录上下界
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */
class Solution {
public:
bool fun(TreeNode* root,long long left,long long right)
{
if(root == nullptr)
return true;
if(root->val <= left || root->val >= right)
return false;
return fun(root->left,left,root->val) && fun(root->right,root->val,right);
}
bool isValidBST(TreeNode* root) {
return fun(root,LONG_MIN,LONG_MAX);
}
};
利用中序遍历方法
得到的数列是有序的升序序列
那么该结点值必然小于前一个被遍历的结点
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */
class Solution {
public:
bool isValidBST(TreeNode* root) {
stack<TreeNode*> mystack;
long long pre = LONG_MIN;
while(!mystack.empty() || root!=nullptr)
{
while(root)
{
mystack.emplace(root);
root = root->left;
}
root = mystack.top();
mystack.pop();
if(root->val <= pre)
return false;
pre = root->val;
root = root->right;
}
return true;
}
};
边栏推荐
- There are 12 balls, including 11 weight, only one, don't know is light or heavy. Three times in balance scales, find out the ball.
- OD-Model【5】:YOLOv1
- Digital management insight into retail and e-commerce operations - retail password
- Oracle中对临时表空间执行shrink操作
- 无代码平台数字入门教程
- 什么是终端特权管理
- ORB-SLAM3中的优化
- LeetCode第三题(Longest Substring Without Repeating Characters)三部曲之三
- 广东对小鹏/广汽丰田开展网络安全检查
- Google Earth Engine APP ——制作上传GIF动图并添加全球矢量位置
猜你喜欢
随机推荐
DB2查看执行过长的SQL
开源一夏|ArkUI如何自定义弹窗(eTS)
Digital management insight into retail and e-commerce operations - retail password
无代码平台描述文字入门教程
MySQL 45 讲 | 11 怎么给字符串字段加索引?
Servlet基础详细版
vscode插件设置——Golang开发环境配置
【Idea series】idea configuration
Graphical Hands-on Tutorial--ESP32 One-Key Network Configuration (Smartconfig, Airkiss)
Mobile open source low code tools beeware and kivy
Using .NET to simply implement a high-performance clone of Redis (2)
onlyoffice设置跟踪变化trackChanges默认为对自己启动
Events in August | 51CTO's 17th Anniversary Celebration, post a blog post to get gifts such as tea sets/notebooks/T-shirts!
【Inspirational】The importance of review
粤黔协作,山海同心!578种贵州特色农产品走进粤港澳大湾区
ORA-00054 资源正忙
北京大学,新迎3位副校长!其中一人为中科院院士!
广东对小鹏/广汽丰田开展网络安全检查
解决:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING
Meishe Q&A Room | Meiying VS Meishe Cloud Editing