0
点赞
收藏
分享

微信扫一扫

leetcode 98 验证二叉搜索树

思路

原题链接

  1. 使用递归函数需要定义三个参数
  2. 分别是,当前的节点,一个最小的值lower,一个最大的值upper
  3. 当node为null,则直接返回true
  4. node.val 小于最小,即小于所有可能的左侧叶子节点,或者node.val 大于最大,即大于所有可能的右侧叶子节点,则返回false
  5. 之后递归判断node.left and node.right ,此时的递归函数的参数已经改变了node.left最大值变为了上一层的node.val ,而node.right 的最小值变为了上一层的node.val
class Solution {
    public boolean isValidBST(TreeNode root) {
        //要考虑int的边界值,就要用更大范围数据类型去比较判断
       return recur(root, Long.MIN_VALUE, Long.MAX_VALUE);
    }
    public boolean recur(TreeNode node, long lower, long upper){
        if(node == null) return true;
        if(node.val <= lower || node.val >= upper) return false;
        //此时的参数上下限已经改变,需注意
        return recur(node.left, lower, node.val) && recur(node.right, node.val, upper);
    }
}
举报

相关推荐

0 条评论