zoukankan      html  css  js  c++  java
  • Medium | LeetCode 98. 验证二叉搜索树

    98. 验证二叉搜索树

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

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

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

    示例 1:

    输入:
        2
       / 
      1   3
    输出: true
    

    示例 2:

    输入:
        5
       / 
      1   4
         / 
        3   6
    输出: false
    解释: 输入为: [5,1,4,null,null,3,6]。
         根节点的值为 5 ,但是其右子节点值为 4 。
    

    解题思路

    递归遍历二叉树, 在递归时给出节点的值的上界和下界。

    对于根节点, 设置初始的上界为LONG_MAX, 初始下界为LONG_MIN。

    递归其左子树时, 上界修改为当前值, 下界还是当前节点的下界。
    递归其右子树时, 上界修改为当前节点的上届, 下界修改为当前节点值。

    递归的代码如下:

    public boolean isValidBST(TreeNode root) {
        return helper(root, Integer.MIN_VALUE, Integer.MAX_VALUE);
    }
    
    public boolean helper(TreeNode node, int lower, int upper) {
        if (node == null) {
            return true;
        }
        if (node.val < lower || node.val > upper) {
            return false;
        }
    	return helper(node.left, lower, val) && helper(node.right, val, upper);
    }
    
  • 相关阅读:
    内存Fuzz和WinAFL
    AFL分析与实战
    协议Fuzz技术
    Fuzz技术综述与文件Fuzz
    WireShark学习笔记(一)
    虚拟机连接的问题
    jq 时间的代理和父级的删除
    Windows(WSL2) Linux子系统搭建Docker环境
    JavaCV FFmpeg H264编码
    JavaCV FFmpeg AAC编码
  • 原文地址:https://www.cnblogs.com/chenrj97/p/14290611.html
Copyright © 2011-2022 走看看