一、leetcode 98. 验证二叉搜索树

  1. 通过辅助函数增加参数进行判断。
  2. 虽然节点值在INT范围内,但要求其中序遍历序列严格单调递增,因此等于也不行,而且需要用LONG_MIN\LONG_MAX初始化最大最小值。
using ll = long long;
class Solution {
protected:
bool isBST(TreeNode* root, ll leftMin, ll rightMax){
if(!root) return true;
if(root->val <= leftMin || root->val >= rightMax){
return false;
}
return isBST(root->left, leftMin, root->val) && isBST(root->right, root->val, rightMax);
}
public:
bool isValidBST(TreeNode* root) {
if(!root) return true;
return isBST(root, LONG_MIN, LONG_MAX);
}
};

二、leetcode 255. 验证前序遍历序列二叉搜索树

验证前序遍历序列是否满足二叉搜索树要求。

由于前序遍历的顺序为: root →left → right;

故遍历左子树的时候是递减的,可以用单调队列来进行维护。

对序列元素进行遍历,

  1. 如果当前元素小于最新出栈的元素,则必定不是二叉搜索树。

  2. 如果栈不空,而且当前元素val大于栈顶元素,说明开始进入右子树,那么弹出栈顶元素,更新到【最新栈顶元素pre】,直到该元素小于栈顶元素。

  3. 当前元素入栈

  4. 能遍历完所有元素,则为二叉搜索树。

class Solution {

public:
bool verifyPreorder(vector<int>& preorder) {
int pre = INT_MIN;
stack<int> monoStack;
for(int i = 0; i < preorder.size(); i++){
int curVal = preorder[i];
if(curVal < pre){
return false;
}
while(!monoStack.empty() && monoStack.top() < curVal){
pre = monoStack.top();
monoStack.pop();
}
monoStack.push(curVal);
}
return true;
}
}; //5 2 1 3 6

LeetCode 验证二叉搜索树的两种不同题型的更多相关文章

  1. 二叉搜索树的两种实现(数组模拟,STL)

    书上实现: 二叉搜索数的特点:高效实现 插入一个数值,查询是否包含某个数值,删除某一个数值. 所有的节点都满足左子树上的所有节点都比自己的小,而右子树上的所有节点都比自己大的特点. 查询:如果当前数值 ...

  2. LeetCode - 验证二叉搜索树

    给定一个二叉树,判断其是否是一个有效的二叉搜索树. 一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数. 节点的右子树只包含大于当前节点的数. 所有左子树和右子树自身必须也是二叉搜索树. ...

  3. 代码随想录算法训练营day20 | leetcode ● 654.最大二叉树 ● 617.合并二叉树 ● 700.二叉搜索树中的搜索 ● 98.验证二叉搜索树

    LeetCode 654.最大二叉树 分析1.0 if(start == end) return节点索引 locateMaxNode(arr,start,end) new root = 最大索引对应节 ...

  4. [LeetCode] Validate Binary Search Tree 验证二叉搜索树

    Given a binary tree, determine if it is a valid binary search tree (BST). Assume a BST is defined as ...

  5. [LeetCode] 98. Validate Binary Search Tree 验证二叉搜索树

    Given a binary tree, determine if it is a valid binary search tree (BST). Assume a BST is defined as ...

  6. [LeetCode] Verify Preorder Sequence in Binary Search Tree 验证二叉搜索树的先序序列

    Given an array of numbers, verify whether it is the correct preorder traversal sequence of a binary ...

  7. LeetCode(98): 验证二叉搜索树

    Medium! 题目描述: 给定一个二叉树,判断其是否是一个有效的二叉搜索树. 一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数. 节点的右子树只包含大于当前节点的数. 所有左子树和右 ...

  8. LeetCode第[98]题(Java):Validate Binary Search Tree(验证二叉搜索树)

    题目:验证二叉搜索树 难度:Medium 题目内容: Given a binary tree, determine if it is a valid binary search tree (BST). ...

  9. LeetCode初级算法--树02:验证二叉搜索树

    LeetCode初级算法--树02:验证二叉搜索树 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.ne ...

  10. [LeetCode] 255. Verify Preorder Sequence in Binary Search Tree 验证二叉搜索树的先序序列

    Given an array of numbers, verify whether it is the correct preorder traversal sequence of a binary ...

随机推荐

  1. SpringBoot全局异常,返回JSON数据

    全局异常处理 为什么要配全局异常? 不配全局服务端报错场景,1/0.空指针等 配置好处 统一的错误页面或错误码 对用户更友好 配置全局异常 第一步类添加注解 @ControllerAdvicce,如果 ...

  2. 妙趣横生:利用Echarts实现SpreadJS引用从属关系的可视化魅力

    最新技术资源(建议收藏) https://www.grapecity.com.cn/resources/ 在金融行业,我们经常会有审计审查的需求,对某个计算结果进行审查,但是这个计算结果可能依赖多个单 ...

  3. UE4 蓝图查找Actor和Actor标签

    在用UE4 开发数字孪生应用的过程中,有很多业务会涉及到actor的查找,和actor标签的使用. 比如下面的场景中,找出所有的物联网设备进行标注. 通过类查找actor 通过类查找actor,可以查 ...

  4. Django使用 DoesNotExist 异常和 Logger 来记录异常情况

    代码不仅处理了特定的异常类型,还可以添加更多的调试信息来帮助诊断问题.可以使用 DoesNotExist 异常和 Logger 来记录异常情况. from django.core.exceptions ...

  5. Docker 容器开发:虚拟化

    Docker 容器开发:虚拟化 Docker 的核心价值在于虚拟化或者说环境隔离[通过虚拟化技术实现虚拟环境],解决环境配置和部署的依赖问题实现解耦 我对虚拟化的理解源自<Operating S ...

  6. 关于elementUI的select组件回显问题

    最近接受了一个后台项目,需求是这样的,点击表单项,弹出的弹出层显示该表单项目的信息.但是回显的时候,关于弹出层中的级联显示有问题,如图: 回显结果为: 回显代码为: 弹框为: 我就不明白了,分明分公司 ...

  7. Linux 基于flock命令实现多进程并发读写文件控制

    基于flock命令实现多进程并发读写文件控制 需求描述 实际项目中,需要在Linux下通过shell脚本并发读写同一个文件,但是希望同一时刻,只有一个进程可以在读.写目标文件. 解决方案 使用floc ...

  8. 【服务器】Ubuntu虚拟内存设置

    引子 最近服务器内存老是爆掉,64G的内存对于四五个人同时使用还是有点勉强,上网查询了一下虚拟内存的教程,本博客记录一下方法. swap内存设置 假设你想将swap文件放在/mnt/data/mem目 ...

  9. fasterWhisper和MoneyPrinterPlus无缝集成

    MoneyPrinterPlus之前使用的是各种云厂商的语音识别服务来进行语音的视频和字幕的识别工作. 但是很多小伙伴说云服务用不起. 那么没办法,MoneyPrinterPlus上线最新版本,支持f ...

  10. laravel6学习

    web 服务器需要拥有 storage 目录下的所有目录和 bootstrap/cache 目录的写权限