LeetCode - 98. validate-binary-search-tree

思路

合格的BST:
如果左子树不为空,左子树上的所有节点的值小于根节点。
如果右子树不为空,右子树上的所有节点的值大于根节点。

  1. 加入一个递归方法hepler(root, lower, upper) 方法,来判断root节点的值,是否在(lower,upper)区间内。
  2. 如果是左子树,那么hepler(root.left, lower, root.val),如果root节点的值不满足(lower,root.val)这个区间,返回false;
  3. 如果是右子树,那么hepler(root.right, root.val, upper),如果root节点的值不满足(root.val,upper)这个区间,返回false;

如果左右子树都是true,那么整棵树就是合格的。

代码

    public static boolean isValidBST(TreeNode root) {
        return helper(root, null, null);
    }

    public static boolean helper(TreeNode root, Integer lower, Integer upper) {
        if (root == null) {
            return true;
        }
        if (lower != null && root.val <= lower) {
            return false;
        }
        if (upper != null && root.val >= upper) {
            return false;
        }
        if (!helper(root.left,lower,root.val)){
            return false;
        }
        if (!helper(root.right,root.val, upper)){
            return false;
        }
        return true;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值