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两个条件。

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

相关推荐
步行cgn几秒前
OCP开闭原则:面向对象设计的核心原则
java·开发语言·开闭原则
落木萧萧8259 分钟前
MyBatis 启动的时候都在干什么:从 MappedStatement 说起
java·数据库·后端
en.en..10 分钟前
Linux wait()函数(预防僵尸进程)
java·大数据·开发语言
扬大平仔24 分钟前
小深:用 AgentScope Java 2.0 Harness 做私人助手(上)
java·开发语言
captain37630 分钟前
网络编程(1)
java·网络·ide·java-ee
李少兄34 分钟前
JavaScript 运算符完全指南
java·开发语言·javascript
极客互动API39 分钟前
企业微信 AI 智能客服实战:Spring Boot+Vue 接入豆包、扣子、DeepSeek
java·人工智能·微信·企业微信
今天AI了吗40 分钟前
Codex使用技巧:深度解析 Plan Mode 与 Goal Mode
java·网络·人工智能·架构·java-ee
Huangxy__41 分钟前
java+ai 全栈项目
java·开发语言
阿维的博客日记1 小时前
Example API指南2
java·mybatis