首页 > 其他分享 >合法二叉搜索树

合法二叉搜索树

时间:2024-06-11 11:00:28浏览次数:21  
标签:null TreeNode val 合法 搜索 二叉 root 节点 higher

题目链接

合法二叉搜索树

题目描述

注意点

解答思路

  • 第一个思路是将中序遍历,并将遍历到的节点的值存储到队列中,根据队列先进先出的特点将每次弹出的元素与其前面的值进行比较,如果队列是按照从小到大进行排序的,说明该树是合法二叉搜索树
  • 第二个思路是递归,从根节点开始,每次传入相应子树的值所处的区间范围(根节点范围不限制),对于左子树,其下的节点值应该都小于根节点的值,对于右子树,其下的节点值应该都大于根节点的值…

代码

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public boolean isValidBST(TreeNode root) {
        return helper(root, null, null);
    }

    public boolean helper(TreeNode root, Integer lower, Integer higher) {
        if (root == null) {
            return true;
        }
        if (lower != null && root.val <= lower) {
            return false;
        }
        if (higher != null && root.val >= higher) {
            return false;
        }
        return helper(root.left, lower, root.val) && helper(root.right, root.val, higher);
    }
}

关键点

  • 递归的思想
  • 在递归判断子树是否是合法二叉搜索树时,需要保证子树中的节点值始终处于(lower, higher)范围内,lower、higher可能为null,要注意空指针异常

标签:null,TreeNode,val,合法,搜索,二叉,root,节点,higher
From: https://blog.csdn.net/weixin_51628158/article/details/139591484

相关文章

  • 二叉树相关算法题汇总-go语言实现
    总结先序中序后序遍历就能解决一些算法题。层次遍历使用队列。从左子树、右子树获取答案,然后结合根节点来计算答案。前缀树,比Hashset更稳定。O(1),只不过占内存。trie树。递归。递归,递归。到叶子节点收集答案。然后移除路径。packagemainimport( "fmt" "math......
  • 二叉树的所有路径-力扣
    这道题目需要返回给定二叉树所有从根节点到叶子节点的路径,那么对二叉树进行深度优先搜索,遇到节点就将其加到路径中,如果这个节点的左右子节点都为空,那么它就是一个叶子节点,将这条路径加入到结果数组中。这里将int转换为string使用了to_string()函数。/***Definition......
  • SSR技术:让搜索引擎爱上你的网站
    SSR在编程开发中通常指的是“Server-SideRendering”(服务器端渲染)。这是一种网页渲染技术,其核心思想是在服务器端完成页面的HTML结构渲染,然后将完整的HTML页面发送给客户端(浏览器)。这与传统的客户端渲染(Client-SideRendering,CSR)不同,后者通常只发送一个空的HTML页面和JavaS......
  • 记忆化搜索 dfs
    Q1  198.打家劫舍解法一:知识点:记忆化搜索=递归搜索+保留计算结果递归部分:这样写能够完成上述题目,但是会超时,因为时间复杂度是质数级别,这时候就需要改进代码,也就是保留结果Cache简单解释一下,这里就运用了cache,起初全设置为-1,在进入dfs函数之后首先我们会判断这个d......
  • Leetcode 力扣114. 二叉树展开为链表 (抖音号:708231408)
    给你二叉树的根结点 root ,请你将它展开为一个单链表:展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序相同。示例1:输入:root=[1,2,5,3,4,null,6]输出:[1,null,2......
  • 热点搜索词统计
    一、项目背景要求根据用户上网的搜索记录对每天的热点搜索词进行统计,以了解用户所关心的热点话题。要求完成:1.统计每天搜索数量前3名的搜索词(同一天中同一用户多次搜索同一个搜索词视为1次)2.使用scala编程,并用sparksql运行结果二、数据文件字段分别是:时间,用户,搜索词......
  • 基于启发式蝙蝠算法、粒子群算法、花轮询算法和布谷鸟搜索算法的换热器PI控制器优化(Ma
    ......
  • 【数据结构】链式二叉树详解
    个人主页~链式二叉树基本内容~链式二叉树详解1、通过前序遍历的数组来构建二叉树2、二叉树的销毁3、二叉树节点个数4、二叉树叶子节点个数5、二叉树第k层节点个数6、二叉树查找7、前序遍历8、中序遍历9、后序遍历10、层序遍历与检查二叉树是否为完全二叉树Queue.hQue......
  • KDY----BFS_宽度优先搜索习题
    题目由可达鸭提供,本篇够  字,阅读时注意休息和暂停。一、课时提交情(AC情况)T1、武士风度的牛  100/100(老师带着做的。)T2、抓住那头牛100/100T3、仙岛求药  100/100T4、TheCastle 0/100(时间不够了,就看了看题目。)二、目录T1、武士风度的牛T2、抓住那头牛T......
  • Ten Tips for Smarter Google Searches (十个更聪明使用 Google 搜索的技巧)
    TenTipsforSmarterGoogleSearches十个更聪明使用Google搜索的技巧 Date:Dec1,2006Articleisprovidedcourtesyof Que.Returntothearticle MostpeopleuseGoogleinaveryinefficientandoftenineffectivemanner.Ifallyoudoisenterafew......