当前位置:网站首页>【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;
}
};
边栏推荐
猜你喜欢

Jenkins使用手册(1) —— 软件安装

强烈推荐一款优秀且通用的后台管理系统

AWS Lambda related concepts and implementation approach

MySQL:面试问的范式设计

iMeta | 德国国家肿瘤中心顾祖光发表复杂热图(ComplexHeatmap)可视化方法

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

Multimedia and Internet of Things technology make the version "live" 129 vinyl records "Centennial Voice"

再次搞定 Ali 云函数计算 FC

八、MFC对话框

图文手把手教程--ESP32 一键配网(Smartconfig、Airkiss)
随机推荐
深度学习100例 —— 卷积神经网络(CNN)天气识别
Graphic and text hands-on tutorial--ESP32 MQTT docking EMQX local server (VSCODE+ESP-IDF)
标准C语言学习总结12
Introduction to Mysql storage engine
C language * Xiaobai's adventure
C#/VB.NET:在 Word 中设置文本对齐方式
3-5年以上的功能测试如何进阶自动化?
STM32入门开发 制作红外线遥控器(智能居家-万能遥控器)
[论文阅读] Unpaired Image-to-Image Translation Using Adversarial Consistency Loss
iMeta | 德国国家肿瘤中心顾祖光发表复杂热图(ComplexHeatmap)可视化方法
图文手把手教程--ESP32 MQTT对接EMQX本地服务器(VSCODE+ESP-IDF)
遍历Map的四种方法
黑马瑞吉外卖之员工账号的禁用和启用以及编辑修改
Meishe Q&A Room | Meiying VS Meishe Cloud Editing
【机器学习】:如何对你的数据进行分类?
LeetCode第三题(Longest Substring Without Repeating Characters)三部曲之三
JUC(1)线程和进程、并发和并行、线程的状态、lock锁、生产者和消费者问题
开源一夏|ArkUI如何自定义弹窗(eTS)
Apache Calcite 框架原理入门和生产应用
Jina 实例秀|基于神经搜索的网络安全威胁检测(一)