• 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);
    }
    
  • 相关阅读:
    XP下关于快速切换用户功能的相关编程
    CRC原理及其逆向分析方法
    爱的十个秘密4.给予的力量
    爱的十个秘密1.序幕
    隐式链接无.LIB动态链接库
    电影图标黑客帝国(The Matrix)
    手机图标
    圣斗士图标:十二星座黄金圣衣
    MAC风格图标
    GB码与BIG5
  • 原文地址:https://www.cnblogs.com/chenrj97/p/14290611.html
Copyright © 2020-2023  润新知