当前位置:网站首页>【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;
}
};
边栏推荐
猜你喜欢
[论文阅读] Unpaired Image-to-Image Translation Using Adversarial Consistency Loss
图文手把手教程--ESP32 MQTT对接EMQX本地服务器(VSCODE+ESP-IDF)
MySQL:完整性约束和 表的设计原则
无代码平台数字入门教程
iMeta | Baidu certification is completed, search "iMeta" directly to the publisher's homepage and submission link
广东对小鹏/广汽丰田开展网络安全检查
Small program containers accelerate the construction of an integrated online government service platform
Multimedia and Internet of Things technology make the version "live" 129 vinyl records "Centennial Voice"
二叉树与堆
zabbix部署
随机推荐
datax oracle to oracle离线json文件
HCIP 第十八天
8月活动|51CTO十七周年庆,发博文得茶具/笔记本/T恤等礼品!
怎么禁止textarea拉伸
深度学习100例 —— 卷积神经网络(CNN)天气识别
C语言*小白的探险历程
二叉树与堆
Camunda overall architecture and related concepts
AWS Lambda related concepts and implementation approach
SkiaSharp 之 WPF 自绘 粒子花园(案例版)
DB2查看执行过长的SQL
Jenkins User Manual (1) - Software Installation
What is the principle of thermal imaging temperature measurement?Do you know?
Difference between ArrayList and LinkedList
【励志】复盘的重要性
Mysql高级篇学习总结13:多表连接查询语句优化方法(带join语句)
Win11文件类型怎么改?Win11修改文件后缀的方法
Heap Sort
iMeta | 百度认证完成,搜索“iMeta”直达出版社主页和投稿链接
小程序容器加快一体化在线政务服务平台建设