验证二叉搜索树

16 阅读1分钟
package org.example.leetcodeBook.deepSearch;  
//验证二叉搜索树  
//给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。  
// 有效 二叉搜索树定义如下:  
// 节点的左  
// 子树  
// 只包含 小于 当前节点的数。  
// 节点的右子树只包含 大于 当前节点的数。  
// 所有左子树和右子树自身必须也是二叉搜索树。  
//输入:root = [2,1,3]  
// 输出:true  
public class IsValidBSTSolution {  
    class TreeNode{  
        int val;  
        TreeNode left,right;  
        TreeNode(int val){  
            this.val=val;  
        }  
    }  
    public boolean isValidBST(TreeNode root){  
        return isValidBST(root,Long.MIN_VALUE,Long.MAX_VALUE);  
    }  

    private boolean isValidBST(TreeNode root, long minValue, long maxValue) {  
    if(root==null) return true;  
    if(root.val<=minValue || root.val>=maxValue) return false;  
    return isValidBST(root.left,minValue,root.val)&&  
    isValidBST(root.right,root.val,maxValue);  
    }  
}