LeetCode 98 验证二叉搜索树
题目链接:力扣
思路
递归
递归函数声明
bool isValidBST(TreeNode* root,int lower,int upper);//判断根节点是否在lower和upper之间
递归出口:
如果只有根节点,返回真
如果根节点小于等于下界,或者大于等于上界,返回假
递归体:
递归判断左子树范围是否在(lower,root->val),
右子树范围是否在(root->val,upper)
初始时传入参数(-INF,INF)
代码:
class Solution {
public:bool helper(TreeNode* root, long long lower, long long upper) {if (root == nullptr) {return true;}if (root -> val <= lower || root -> val >= upper) {return false;}return helper(root -> left, lower, root -> val) && helper(root -> right, root -> val, upper);}bool isValidBST(TreeNode* root) {return helper(root, LONG_MIN, LONG_MAX);}
};来源:力扣(LeetCode)
思路2:
利用二叉搜索树的性质:中序遍历递增
class Solution {
public:bool isValidBST(TreeNode* root) {stack<TreeNode*> stack;long long inorder = (long long)INT_MIN - 1;while (!stack.empty() || root != nullptr) {while (root != nullptr) {stack.push(root);root = root -> left;}root = stack.top();stack.pop();// 如果中序遍历得到的节点的值小于等于前一个 inorder,说明不是二叉搜索树if (root -> val <= inorder) {return false;}inorder = root -> val;root = root -> right;}return true;}
};
LeetCode 98 验证二叉搜索树相关推荐
- Leetcode 98:验证二叉搜索树
Leetcode 98:验证二叉搜索树 题目描述 我的解法:非递归的中序遍历 其它解法1:非递归的中序遍历,用LONG_MIN规避树的val等于INT_MIN的情况 其他解法2:递归的中序遍历思想 其 ...
- LeetCode 98. 验证二叉搜索树(中序遍历)
文章目录 1. 题目信息 2. 解题 2.1 递归中序 2.2 非递归中序 1. 题目信息 给定一个二叉树,判断其是否是一个有效的二叉搜索树. 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于 ...
- leetcode —— 98. 验证二叉搜索树
给定一个二叉树,判断其是否是一个有效的二叉搜索树. 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数. 节点的右子树只包含大于当前节点的数. 所有左子树和右子树自身必须也是二叉搜索 ...
- leetcode 98. 验证二叉搜索树 递归遍历左右子树和中序遍历 c语言解法
如题: 给定一个二叉树,判断其是否是一个有效的二叉搜索树. 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数. 节点的右子树只包含大于当前节点的数. 所有左子树和右子树自身必须也是 ...
- Leetcode 98. 验证二叉搜索树 (每日一题 20210810)
给定一个二叉树,判断其是否是一个有效的二叉搜索树.假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数. 节点的右子树只包含大于当前节点的数. 所有左子树和右子树自身必须也是二叉搜索树. ...
- LeetCode 98. 验证二叉搜索树 思考分析
题目 给定一个二叉树,判断其是否是一个有效的二叉搜索树. 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数. 节点的右子树只包含大于当前节点的数. 所有左子树和右子树自身必须也是二 ...
- leetcode - 98. 验证二叉搜索树
给定一个二叉树,判断其是否是一个有效的二叉搜索树. 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数. 节点的右子树只包含大于当前节点的数. 所有左子树和右子树自身必须也是二叉搜索 ...
- LeetCode 98. 验证二叉搜索树(递归)(迭代)
题目描述 给定一个二叉树,判断其是否是一个有效的二叉搜索树. 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数. 节点的右子树只包含大于当前节点的数. 所有左子树和右子树自身必须也 ...
- Leetcode 98. 验证二叉搜索树 解题思路及C++实现
解题思路: 分别验证root的左右子树是否是二叉树,同时,左子树的最大值要小于root->val,右子树的最小值要大于root->val. 在左右子树中,一直向root的左子树探索,就能得 ...
最新文章
- 阅读Book: MultiObjective using Evolutionary Algorithms (4) --- 3 种方法find Non-dominated set
- 如何快速学会别人的代码和思维
- python-- Image 模块
- CentOS7 搭建GIT环境
- 【Python3 爬虫】03_urllib.error异常处理
- 如何利用LabelImg将标注文件在YOLO格式与PascalVOC格式间相互转换
- LCD显示深究day01 mmap知识补充
- 极客无极限 一行HTML5代码引发的创意大爆炸
- Java实现二分查找算法
- 实验五 单表查询(V2.0版)
- C语言之数组和指针位移的本质(四十五)
- ice服务器能修复吗,系统进不去怎么办?教你利用bootice工具引导修复系统
- win7安装wincc信息服务器不可用,Win7安装WinCC的方法
- 适合智能电视的K歌神器,纯麦U7PRO麦克风体验
- python操作 e'xcel表格
- 360评估应用的6大场景
- php上传文件失败解决方案
- Airtest 入门
- C语言除法哪个是整除,c语言整除(c语言整除怎么表示)
- shp转.osm.pbf