当前位置:网站首页>【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;
}
};
边栏推荐
- Graphical Hands-on Tutorial--ESP32 One-Key Network Configuration (Smartconfig, Airkiss)
- Rust 入门指南 (用 WASM 开发第一个 Web 页面)
- MySQL之my.cnf配置文件
- 北京大学,新迎3位副校长!其中一人为中科院院士!
- datax oracle to oracle incremental synchronization
- 粤黔协作,山海同心!578种贵州特色农产品走进粤港澳大湾区
- 利用pytest hook函数实现自动化测试结果推送企业微信
- bitset的基本用法
- RL78 development environment
- MySQL 45 讲 | 11 怎么给字符串字段加索引?
猜你喜欢

MATLAB程序设计与应用 3.1 特殊矩阵

MySQL核心SQL:结构化查询语句SQL、库操作、表操作、CRUD

美摄问答室|美映 VS 美摄云剪辑

【Idea series】idea configuration

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

解决:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING

Introduction to Mysql storage engine

cubemx stm32 afm3000模块 气体流量传感器 驱动代码

MySQL:面试问的范式设计

Graphical Hands-on Tutorial--ESP32 One-Key Network Configuration (Smartconfig, Airkiss)
随机推荐
Graphical Hands-on Tutorial--ESP32 OTA Over-the-Air Upgrade (VSCODE+IDF)
ORA-00054 资源正忙
Four ways to traverse a Map
Mysql高级篇学习总结13:多表连接查询语句优化方法(带join语句)
WPF 截图控件之画笔(八)「仿微信」
标准C语言学习总结12
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.
热成像测温的原理是什么呢?你知道吗?
Multimedia and Internet of Things technology make the version "live" 129 vinyl records "Centennial Voice"
[easyUI]修改datagrid表格中的值
MySQL core SQL: SQL structured query statements, library, table operation, CRUD
Jina 实例秀|基于神经搜索的网络安全威胁检测(一)
无代码平台数字入门教程
WPF 截图控件之画笔(八)「仿微信」
利用pytest hook函数实现自动化测试结果推送企业微信
强烈推荐一款优秀且通用的后台管理系统
学会使用set和map的基本接口
Graphic and text hands-on tutorial--ESP32 MQTT docking EMQX local server (VSCODE+ESP-IDF)
MySQL: Integrity Constraints and Table Design Principles
A topic of map