当前位置:网站首页>【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;
}
};
边栏推荐
- Introduction to Mysql storage engine
- audio_policy_configuration.xml配置文件详解
- 知其然,知其所以然,JS 对象创建与继承
- mae,mse,rmse分别利用sklearn和numpy实现
- 栈与队列的实现
- cubemx stm32 afm3000模块 气体流量传感器 驱动代码
- iMeta | German National Cancer Center Gu Zuguang published a complex heatmap visualization method
- 开源一夏|ArkUI如何自定义弹窗(eTS)
- iMeta | 百度认证完成,搜索“iMeta”直达出版社主页和投稿链接
- 图文手把手教程--ESP32 OTA空中升级(VSCODE+IDF)
猜你喜欢
![[论文阅读] Unpaired Image-to-Image Translation Using Adversarial Consistency Loss](/img/4d/9c2f94f475834771f6ad6ffe8f8b35.png)
[论文阅读] Unpaired Image-to-Image Translation Using Adversarial Consistency Loss

【虹科案例】基于3D相机组装家具

JUC(1)线程和进程、并发和并行、线程的状态、lock锁、生产者和消费者问题

高级转录组分析和R数据可视化火热报名中(2022.10)

AWS Lambda相关概念与实现思路

Jenkins User Manual (1) - Software Installation

Rust 入门指南 (用 WASM 开发第一个 Web 页面)

HCIP 第十八天

粤黔协作,山海同心!578种贵州特色农产品走进粤港澳大湾区

iMeta | 德国国家肿瘤中心顾祖光发表复杂热图(ComplexHeatmap)可视化方法
随机推荐
使用.NET简单实现一个Redis的高性能克隆版(二)
[easyUI]修改datagrid表格中的值
《迁移学习导论》第2版,升级内容抢先看!
航企纠缠A350安全问题 空客主动取消飞机订单
Mysql 存储引擎简介
C语言*小白的探险历程
Meishe Q&A Room | Meiying VS Meishe Cloud Editing
MySQL之my.cnf配置文件
第二批养老理财试点产品发行 一小时销售20亿元
Jina 实例秀|基于神经搜索的网络安全威胁检测(一)
【Inspirational】The importance of review
【励志】复盘的重要性
使用.NET简单实现一个Redis的高性能克隆版(二)
Apache Calcite 框架原理入门和生产应用
再次搞定 Ali 云函数计算 FC
JUC (1) threads and processes, concurrency and parallelism, thread state, locks, producers and consumers
HCIP 第十八天
[论文阅读] Unpaired Image-to-Image Translation Using Adversarial Consistency Loss
Super Learning Method
遍历Map的四种方法