LeetCode98. 验证二叉搜索树(java)

Leetcode刷题java之98. 验证二叉搜索树 执行结果: 通过 显示详情 执行用时 :1 ms, 在所有 Java 提交中击败了85.86% 的用户 内存消耗 :38.7 MB, 在所有 Java 提交中击败了22.41%的用户 题目: 给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有... 阅读详情

题目:

给定一个二叉树,判断其是否是一个有效的二叉搜索树。

假设一个二叉搜索树具有如下特征:

节点的左子树只包含小于当前节点的数。
节点的右子树只包含大于当前节点的数。
所有左子树和右子树自身必须也是二叉搜索树。

示例:
在这里插入图片描述
代码:

  • 解法一
/**
 * 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) {
    //使用中序遍历的思想 中序遍历会得到一个升序的排列
        List<Integer> list=new ArrayList<Integer>();  //定义list存放终须遍历的结果
        inOrder(root,list);  //调用中序遍历
        for(int i=0;i<list.size()-1;++i){	//判断是否符合升序
            if(list.get(i)>=list.get(i+1)) return false;
        }
        return true;
    }
    public void inOrder(TreeNode node,List<Integer> list){	//中序遍历
        if(node==null){ //树为空
            return;
        }
        inOrder(node.left,list);
        list.add(node.val);
        inOrder(node.right,list);
    }
}

-解法二

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    private TreeNode pre = null;
    public boolean isValidBST(TreeNode root) {
       return helper(root);
    }
    
    private boolean helper(TreeNode root){
         if(root == null)
            return true;
       	
         if(!helper(root.left))
             return false;
        
         if(pre != null && pre.val >= root.val)
             return false;
         pre = root;
        
         return helper(root.right);
    }
}
  • 别人的代码
/**
 * 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 isValidBSTCore(root, null, null);
    }

    private boolean isValidBSTCore(TreeNode node, Integer min, Integer max) {
        if (node == null)
            return true;
        if ((max != null && node.val >= max) || (min != null && node.val <= min))
            return false;
        return isValidBSTCore(node.left, min, node.val) && isValidBSTCore(node.right, node.val, max);
    }
}
【力扣题解】P98-验证二叉搜索树-Java题解 【力扣题解】P98-验证二叉搜索树-Java详细题解 阅读详情

相关推荐

LaTeX参考文献格式apsrev4-1,增加文献标题

APS的LaTeX参考文献格式apsrev4-1是隐藏标题的,如果想要出现标题,需要更改apsrev4-1.bst文件内容 在apsrev4-1.bst文件靠后部分,定义不同类型文献格式的地方,将article类型的内容替换为, FUNCTION {article} { output.bibitem format.authors booktitle empty$ { "author" output.check }{ output } if$ author format.

loading1234567的博客 5031

给定一个二叉树,判断其是否是一个有效的二叉搜索树。Java实现

import java.util.LinkedList; import java.util.Stack; /** * 验证一个二叉树是否是二叉搜索树 */ public class ValidateBinarySearchTree { /** * 根据中序遍历的结果来判断是否是二叉搜索树 * @param list * @return */ public static boolean isValidate(LinkedList<Inte.

我的梦境传说 1442

Matlab安装Embedded Coder Support Package for Texas Instruments C2000 Processors教程

Matlab安装Embedded Coder Support Package for Texas Instruments C2000 Processors

m0_69133594的博客 2824

判断一颗树是否是二叉搜索树(Java)

题目描述 给定一个二叉树,判断它是否是一个有效的二叉搜索树(BST)。 假设BST定义如下: 节点的左子树只包含键值小于节点键值的节点。 节点的右子树只包含键值大于节点键值的节点。 左子树和右子树也必须是二叉搜索树。 解决 代码: public boolean isValidBST(TreeNode root) { if (root == null) return true; St...

LrvingTc的博客 4042

QMT量化交易桥接方案深度对比:从MiniQMT淘汰说起

量化交易系统中的API桥接,本质是解决本地终端与底层交易引擎之间的通信瓶颈。其核心原理在于绕过GUI封装、直连确定性执行层,从而获得低延迟、高可靠、可监控的指令通路。技术价值体现在策略实盘一致性提升、毫秒级响应保障及运维可控性增强。典型应用场景包括打板策略、T+0套利、高频网格等对时效与稳定性双敏感的自动化交易。本文聚焦国金证券QMT专业版生态,系统剖析DLL注入、HTTP反向代理、IPC共享内存与官方HTTP API四大桥接路径的性能边界、合规风险与工程落地成本,尤其深入解析qmt终端 client is

weixin_33892359的博客 457

WiFi信道状态信息 基于Intel 5300的CSI Tool 安装及使用(一)

经过半个月的坎坷安装过程,连Windows系统都没装过的本人终于颤颤巍巍把CSI TOOL装好了,下面记录一下适于我所使用设备的安装过程。设备:一台THINKPAD X201,一台师兄借的华硕主板的台式机首先,如果你和我一样对linux其实一窍不通的话,建议先反复看教程里的安装代码,照猫画虎很难一步实现的,中途一定会有这或那的问题需要解决,所以该了解的基础linux指令还是要了解,起码安装过程中的那些指令可以去查一查。.........

Silver_777的博客 2万+

java实现判断是否为二叉搜索树

标题:java实现判断是否为二叉搜索树 一、分析 1)第一种: 对于二叉搜索树,首先想到的的是中序遍历,得到的是一个有序序列。 所以方法可以是使用中序的递归,非递归进行实现,只要看是否为有序即可。 方法一:中序非递归遍历,保存最小值为long cur = Long.MIN_VALUE;每次遍历得到一个节点的值时,比较是否大于当前最小值cur,满足条件则更新当前最小值。 /** * 使用非递归实现 迭代版的【非递归中序遍历】,简单,容易实现 * 执行用时:2 ms, 在所有 Java 提交中击败

weixin_45986454的博客 1585

Visual Studio 命令提示符工具区别与使用场景

Visual Studio会提供一系列命令提示符工具,这些工具应用在哪些场景呢?本文进行了相关介绍。

cicada15的博客 3493

java数据结构与算法之判断是否是二叉搜索树

一、什么是二叉搜索树 一棵二叉树中,对于所有的子树,他的左边节点一定比他小,右边节点一定比他大。这样的树就叫做二叉搜索树。 如何判断一棵树是否是二叉搜索树? 方式一:直接通过树的中序遍历,搜索二叉树使用中序遍历出来的结果一定是升序的。 方式二:可以根据二叉树的通用求解方法来求解。 每个节点都可以向他的左右孩子要结果。 一棵二叉搜索树的每个节点形成的子树都应该满足二叉搜索树的定义。所以我们对于每个子树都向他的左右孩子要结果,当所有的子树都是二叉搜索树时,整棵树就是二叉搜索树。 二、解法 方式一、通过中序遍

wenpan的博客 704

Android:Google三方库之Adjust集成详细步骤

Android为APP添加google adjust功能

学习就是我的个性 4474

MIPI D-PHY TX 一致性测试实例解析 Part 02

如果测过1.3.x,并对这组测试的细节已经熟悉的前提下,1.4.x的测试将会变得轻松,因为几乎相同的测试项被用于时钟通道的数据测量。

一只豌豆象的博客 8314

验证二叉搜索树java实现

方法一:二叉树的中序遍历 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNod

guiguchunqiu的博客 576

Arcgis栅格裁剪批处理工具

Arcgis栅格裁剪批处理工具

yilvyangguang520的博客 2172

《LeetCode力扣练习》第98题 验证二叉搜索树 Java

《LeetCode力扣练习》第98题 验证二叉搜索树 Java 一、资源 题目: 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。 节点的右子树只包含 大于 当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 示例 1: 输入:root = [2,1,3] 输出:true 示例 2: 输入:root = [5,1,4,null,null,3,6] 输出:false 解释:根节点的值是 5 ,但是

XRT_knives的博客 326

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

[LeetCode]98. 验证二叉搜索树 (java实现)递归 dfs

[LeetCode]98. 验证二叉搜索树 (java实现)递归 dfs

u011250186的博客 212

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

精选力扣500题 第52题 LeetCode 98. 验证二叉搜索树【c++/java详细题解】

目录1、题目2、思路3、c++代码4、java代码 1、题目 给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 示例 1: 输入: 2 / \ 1 3 输出: true 示例 2: 输入: 5 / \ 1 4 / \ 3 6 输出: false 解释: 输入为: [5,1,4,nul

林深不见鹿 的博客 2772

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

leetcode hot100【LeetCode 98. 验证二叉搜索树】java实现

LeetCode 98. 验证二叉搜索树

DataCrafter的博客 535

Java实现 LeetCode 98 验证二叉搜索树

98. 验证二叉搜索树 给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 示例 1: 输入: 2 / \ 1 3 输出: true 示例 2: 输入: 5 / \ 1 4 / \ ...

南 墙 1万+

算法:LeetCode98_验证二叉搜索树(BST)_java实现

【代码】算法:LeetCode98_验证二叉搜索树(BST)_java实现。

工匠精神coding,终生学习 280

力扣98.验证二叉搜索树(java)

难度:中等。

youxmm的博客 677

LeetCode 热题 HOT 100 Java题解——98. 验证二叉搜索树

LeetCode 热题 HOT 100 Java题解98. 验证二叉搜索树递归复杂度分析中序遍历复杂度分析 98. 验证二叉搜索树 题目: 给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 示例: 输入: 2 / \ 1 3 输出: true 递归 对于每一个节点都需要小于一个上界,大于一个下届,如果递归到当前节点的左子树,那么当

qq_20067165的博客 320

leetcode98. 验证二叉搜索树(java)

给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。输入:root = [5,1,4,null,null,3,6]左子树上的最大值小于头节点,右子树的最小值,大于头节点、搜索二叉树是要满足左节点比头节点小,头节点比右节点小,解释:根节点的值是 5 ,但是右子节点的值是 4。还有判断左边最大值和右边最小值分别和头节点比较,节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。在递归时,除了要判断左小于头,头小于右,搜索二叉树特性:左 < 头 < 右,

SP_1024的博客 1581

leetcode-98 验证二叉搜索树 Java

https://leetcode-cn.com/problems/validate-binary-search-tree/solution/yan-zheng-er-cha-sou-suo-shu-by-leetcode-solution/ 方法一:中序遍历 /** * Definition for a binary tree node. * public class TreeNode {...

Xenonon的博客 219

leetcode98——验证二叉搜索树——Java实现

题目要求: 分析: 在第96题中,我们刚刚查过二叉搜索树的概念,由于这里要判定一棵树是不是二叉搜索树,我们就应该想到中序遍历。 因为中序遍历是左 -> 根 -> 右来遍历的,如果这棵树是BST,那么中序遍历所读出来的集合顺序应该是递增的。我们根据中序遍历读出来的结果是不是递增来判断这棵树是不是BST。 具体代码如下: class Solution { public boole...

阿花的IT历程 523
上一篇: 数据结构---Trie
下一篇: LeetCode173. 二叉搜索树迭代器(Java)
inferno devil
博客等级 码龄9年 54粉丝 172原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值