LeetCode第98题 - 有效的括号

题目

解答

方案一

java 复制代码
class Solution {
    public boolean isValidBST(TreeNode root) {
        if (root == null) {
            return true;
        }

        if (root.left == null && root.right == null) {
            return true;
        }

        if (root.left != null && root.left.val >= root.val) {
            return false;
        }

        if (root.right != null && root.right.val <= root.val) {
            return false;
        }

        return isValidBST(root.left) && isValidBST(root.right);
    }
}

方案二

java 复制代码
class Solution {
    public boolean isValidBST(TreeNode root) {
        return validate(root, Long.MIN_VALUE, Long.MAX_VALUE);
    }

    public boolean validate(TreeNode node, long min, long max) {
        if (node == null) {
            return true;
        }
        if (node.val <= min || node.val >= max) {
            return false;
        }
        return  validate(node.left, min, node.val) && validate(node.right, node.val, max);
    }
}

要点

二叉搜索树中的任意节点,均满足如下条件:

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

粗看上去,方案一似乎可以满足要求,但实际上并不是,方案一没有完整验证1和2两个条件。

另外从代码量的规模看,方案二用较少的代码量,完成了更多的特性,更加优雅。

相关推荐
马尔代夫哈哈哈几秒前
Spring AOP
java·后端·spring
only-qi2 分钟前
Java 包装器模式:告别“类爆炸“
java·开发语言
Yweir3 分钟前
Java 接口测试框架 Restassured
java·开发语言
wangbing11254 分钟前
开发指南141-类和字节数组转换
java·服务器·前端
~央千澈~4 分钟前
抖音弹幕游戏开发之第15集:添加配置文件·优雅草云桧·卓伊凡
java·前端·python
肖。354878709413 分钟前
html中onclick误区,后续变量会更改怎么办?
android·java·javascript·css·html
码云数智-园园17 分钟前
Java Swing 界面美化与 JPanel 优化完全指南:从复古到现代的视觉革命
java·开发语言
舟舟亢亢17 分钟前
Java并发编程(下)
java·开发语言
我是大猴子19 分钟前
常见八股caffine
java·开发语言·mybatis
玄〤20 分钟前
个人博客网站搭建day1-Spring Security 核心配置详解:CSRF、会话管理、授权与异常处理(漫画解析)
java·后端·spring·spring security·csrf