首页 > 其他分享 >代码随想录——二叉树23、验证二叉搜索树

代码随想录——二叉树23、验证二叉搜索树

时间:2024-11-22 11:21:47浏览次数:1  
标签:right return val 23 nullptr 随想录 二叉树 root left

image
image

根据定义递归

image

class Solution {
public:
    bool dfs(TreeNode* root,long long lower,long long upper){
        if(root == nullptr)return true;
        if(root->val <= lower || root->val >= upper)return false;
        return dfs(root->left,lower,root->val) && dfs(root->right,root->val,upper);
    }
    bool isValidBST(TreeNode* root) {
        return dfs(root,LONG_MIN,LONG_MAX);
        // //这是类似平衡二叉树的判断方法,搜索二叉树行不通
        // if(root == nullptr)return true;
        // if(root->left != nullptr && root->left->val >= root->val)return false;
        // else if(root->right != nullptr && root->right->val <= root->val)return false;
        // return isValidBST(root->left) && isValidBST(root->right);

    }
};

中序遍历

中序遍历下,输出的二叉搜索树节点的数值是有序序列。

有了这个特性,验证二叉搜索树,就相当于变成了判断一个序列是不是递增的了

可以使用一个变量记录最大值/上一个节点的值,若当前节点小于等于它就返回false。而本题节点val最小为INT_MIN,所以变量初始化只能为LONG_MIN(若也为INT_MIN则假设只有一个节点,val就是INT_MIN,本应是true却判为false)

若题目进一步将val最小改为LONG_MIN,不可能再初始化一个更小的值了。所以为了避免初始化,如下方法取到最左面节点的数值来比较。

class Solution {
public:
    TreeNode* pre = nullptr;
    bool isValidBST(TreeNode* root) {
        if(root == nullptr)return true;
        bool left = isValidBST(root->left);

        if(pre != nullptr && pre->val >= root->val)return false;
        pre = root;

        bool right = isValidBST(root->right);
        return left && right;
    }
};

标签:right,return,val,23,nullptr,随想录,二叉树,root,left
From: https://www.cnblogs.com/neromegumi/p/18562414

相关文章

  • 力扣面试题 23 - 动物收容所
    题目:动物收容所。有家动物收容所只收容狗与猫,且严格遵守“先进先出”的原则。在收养该收容所的动物时,收养人只能收养所有动物中“最老”(由其进入收容所的时间长短而定)的动物,或者可以挑选猫或狗(同时必须收养此类动物中“最老”的)。换言之,收养人不能自由挑选想收养的对象。请创......
  • 23、表空间及段区块_1(段区块管理、pctfree、数据块结构、行迁移、高水位)
    oracle数据库的物理存储结构1、spfile:参数文件2、controlfile:控制文件3、datafile:数据文件4、redolog5、arch:归档日志oracle数据库的datafile(数据文件)datafile:oracle有多个数据文件图解:数据库的数据文件被格式化成一个一个大小相等的block(2k、4k、8k、16k、32k),一般都是......
  • LMR23610ADDAR 规格书 数据手册一款DC-DC电源芯片同步降压稳压器芯片
    LMR23610SIMPLESWITCHER®器件是一款简便易用的36V、1A同步降压稳压器。该器件具有4V到36V的宽输入电压范围,适用于从工业到汽车各类应用中非稳压电源的电压调节。该器件采用峰值电流模式控制来实现简单控制环路补偿和逐周期电流限制。它具有75µA的静态电流,因此适用于......
  • 【VISI 2023下载与安装教程】
    VISI2023是一款由VeroSoftware开发的CAD/CAM软件,主要用于模具设计、注塑模具和冲压模具制造;‌VeroVISI2023更新主要包括以下几个方面‌:‌CAD分析功能‌:新增了拔模分析功能,该功能扩展了底切和辅助功能阴影模式集,可以对拔模角度进行动态分析。用户可以通过图形工具栏上的颜色......
  • PTA-团体程序设计天梯赛 L1-023 输出GPLT(20分)
    L1-023输出GPLT分数20题目描述:给定一个长度不超过10000的、仅由英文字母构成的字符串。请将字符重新调整顺序,按GPLTGPLT....这样的顺序输出,并忽略其它字符。当然,四种字符(不区分大小写)的个数不一定是一样多的,若某种字符已经输出完,则余下的字符仍按GPLT的顺序打印,直到所有字......
  • 代码随想录算法训练营day52 day53| 卡码网101.孤岛的总面积 102.沉没孤岛 103.水
    学习资料:https://www.programmercarl.com/kamacoder/0101.孤岛的总面积.html#思路邻接矩阵是否被遍历过;每个坐标点上的值为0、1、2等等;四个边的考虑;地图的遍历次数都是卡码网的题学习记录:101.孤岛的总面积点击查看代码#用深搜,遍历邻接矩阵的四个边,先遍历所有可遍历的岛屿,......
  • 21~23集训测试题总结
    23集训测试题(10.8)密码锁这题数据量较小,可以直接暴力枚举所有密码情况并一一判断暴力代码#include<iostream>#include<cstring>#include<algorithm>usingnamespacestd;structL{intstate[6];booloperator<(constL&b)const{for(inti......
  • 2023年图灵奖揭晓,你怎么看?
    2023年图灵奖揭晓,你怎么看?每年,当图灵奖的得主被揭晓时,整个计算机科学界都会为之一振。2023年,这一辉煌的奖项授予了以色列伟大的科学家AviWigderson。他的成就及其对计算复杂性理论的贡献,让人不得不对他的研究有更深入的了解。那么,AviWigderson这个名字背后,究竟隐藏了怎样......
  • 257. 二叉树的所有路径 Golang实现
    题目描述:给你一个二叉树的根节点root,按任意顺序,返回所有从根节点到叶子节点的路径。叶子节点是指没有子节点的节点。输入:root=[1,2,3,null,5]输出:["1->2->5","1->3"]思路分析:这个题一眼回溯,回溯和递归其实也是紧密相关的。1.确定回溯函数的参数(1.root2.一个路径3......
  • [题解](更新中)2024/11/21 模拟赛 / 2023牛客OI赛前集训营-提高组(第二场) A~B
    整套都是原题所以就不设密码了(原题页面:https://ac.nowcoder.com/acm/contest/65193题解:https://www.nowcoder.com/discuss/540225827162583040\(60+30+20+20=130\)。每日挂分之T2线段树不开\(4\)倍+\(10^6\)数量级输入不关同步流,\(\bf\colorbox{MidnightBlue}{\texttt{\color{......