首页 > 其他分享 >验证二叉搜索树

验证二叉搜索树

时间:2024-01-16 23:34:33浏览次数:23  
标签:遍历 return val 验证 二叉 搜索 false root


首先要明白二叉搜索树如果按照中序遍历存放在数组就是呈现递增的形式。
所以该题的框架一定是基于中序遍历的形式。
但我最开始写的时候忽略了一个点,
if(root->left->val>=root->val){return false;}
if(root->right->val<=root->val){return false;}
这样每个二叉树单独看都可以满足,但可能存在这种情况,右子树中有比根节点小的节点。
看来卡哥的解析后,知道了要定义一个全局变量,遍历的时候不断更新,因为如果是二叉搜索树,按照中序遍历的逻辑,前一个数肯定比后一个数小。
如果不满足就return false;

点击查看代码
class Solution {
public:
long long m_max=LONG_MIN;
    bool isValidBST(TreeNode* root) {
if(!root){return true;}
bool leftflag=isValidBST(root->left);
if(root->val>m_max){
    m_max=root->val;
}
else{return false;}
bool rightflag=isValidBST(root->right);
return leftflag&&rightflag;
    }
};

标签:遍历,return,val,验证,二叉,搜索,false,root
From: https://www.cnblogs.com/yun-che/p/17968858

相关文章

  • 代码随想录 day21 二叉搜索树的最小绝对差 二叉搜索树中的众数 二叉树的最近公共祖先
    二叉搜索树的最小绝对差二叉搜索树就是有序数组那么转换一下就很简单了也可以直接在遍历二叉搜索树的时候进行比较需要一个指针记录前一个节点二叉搜索树中的众数既可以把这题的二叉搜索树当成一般树来做这样就是层序遍历树然后用map记录频率再取频率最高的值这里用......
  • 搜索学习笔记+杂题 (进阶一 dfs/bfs的进阶)
    前言:没啥好说的了。所以只能来写博客了。搜索杂题:相关题单:戳我二、进阶dfs/bfs1、dfs进阶——折半搜索(meetinthemiddle)由于深搜的时间复杂度在每种状态有两个分支的情况下是\(O(2^n)\)。所以一般暴力深搜的数据范围就在\(20-25\)之间。而对于有一大类的题,它的搜索思......
  • android studio 搜索不到GitHub Copilot
    如何在AndroidStudio中搜索到GitHubCopilot1.概述在本文中,我将向你介绍如何在AndroidStudio中搜索到GitHubCopilot。GitHubCopilot是一个基于机器学习的代码助手,它可以根据上下文为你提供代码建议和完成。为了使用GitHubCopilot,你需要在AndroidStudio中安装并配置它。下......
  • 实现手机/PC端滑块验证(VUE+Springboot)
    思路a,通过后端,获取到图片,这个图片自己定义,随便是撒。b,通过代码把图片进行随机抠图,扣出一块,形成第二个图,该小图就是为了合并到原有的窟窿中。c,然后把两个图传到后端,保存抠出的图需要移动的距离到redis,作为验证值。d,前端根据图的位置展示底图与小图e,进行移动,完成后进行验证。......
  • 关于二叉树递归代码的粗鄙理解
    整体来看,二叉树的递归代码,可以分为终止条件,单层递归逻辑。单层递归逻辑就是所谓的根左右那三种,选哪一种也是有讲究的,如果不需要对根节点进行处理,那三种都可以。如果题目侧重与由子节点推到父节点,就采用后序遍历。如果题目侧重与由父节点推到子节点,就采用前序遍历。终止条件怎......
  • PHP开发API接口签名生成及验证
    开发过程中,我们经常会与接口打交道,有的时候是调取别人网站的接口,有的时候是为他人提供自己网站的接口,但是在这调取的过程中都离不开签名验证。我们在设计签名验证的时候,请注意要满足以下几点:可变性:每次的签名必须是不一样的。时效性:每次请求的时效,过期作废等。唯一性:每次的签......
  • python 搜索旋转排序数组 多种解法
    二分查找:旋转排序数组中仍然可以应用二分查找算法。首先,我们找到数组中最小的元素的索引,也就是旋转点的位置。然后,我们根据目标值与旋转点的大小关系,在旋转点的左侧或右侧进行常规的二分查找。defsearch(nums,target):#寻找旋转点left,right=0,len(nums)-1......
  • 吴师兄学算法day07 双指针 680. 验证回文串 II
    题目:680. 验证回文串II易错点:s[1:3]是左闭右开我的第一次代码:classSolution(object):defvalidPalindrome(self,s):""":types:str:rtype:bool"""isPalindrome=lambdax:x==x[::-1]l......
  • 代码随想录 day20 最大二叉树 合并二叉树 二叉搜索树中的搜索 验证二叉搜索树
    最大二叉树前序遍历递归效率不高因为每次都要新开数组给左右子树可以在同一个数组上做这个事情合并二叉树一开始不知道怎么同时遍历两棵树其实只要同时传入两棵树的节点就可以了这里判断两棵树谁空就另外一个作为构造树全为空那就会构造空节点二叉搜索树中的搜索......
  • Spring Boot 使用 拦截器 实现 token 验证
    SpringBoot使用拦截器实现token验证整体思路:1.写一个工具类封装生成、校验和解析token的方法;2.在注册和登录时生成token,生成的token存入redis,下次登录去redis获取,如果存在则直接返回通过3.在拦截器中校验和解析token,拿到token中有用的信息存入privatestati......