Skip to content

Latest commit

 

History

History
54 lines (42 loc) · 1.42 KB

0098. 验证二叉搜索树.java.md

File metadata and controls

54 lines (42 loc) · 1.42 KB

98. 验证二叉搜索树

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

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

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

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/validate-binary-search-tree

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


因为是 包含,所以要额外记录当前子树的上下边界。

/**
 * 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, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public boolean isValidBST(TreeNode root) {
        return isValidBST(root, Long.MIN_VALUE, Long.MAX_VALUE);
    }

    public boolean isValidBST(TreeNode root, long lower, long upper) {
        if (root == null) {
            return true;
        }

        return root.val > lower &&
            root.val < upper &&
            isValidBST(root.left, lower, root.val) &&
            isValidBST(root.right, root.val, upper);
    }

}