Validate Binary Search Tree

来源:互联网 发布:经济与社会统计数据库 编辑:程序博客网 时间:2024/05/04 18:38
    public boolean isValidBST(TreeNode root) {        // Start typing your Java solution below        // DO NOT write main() function        return isValidBST(root, Integer.MIN_VALUE, Integer.MAX_VALUE);    }        public boolean isValidBST(TreeNode root, int min, int max) {        if(root == null) return true;        if(root.val >= max || root.val <= min) return false;        return isValidBST(root.left, min, root.val) && isValidBST(root.right, root.val, max);    }    //it means when inorder traverse the tree, after element will always less than the before    public boolean isValidBST(TreeNode root) {        // Start typing your Java solution below        // DO NOT write main() function        if(root == null) return true;        int min = Integer.MIN_VALUE;        Stack<TreeNode> stack = new Stack<TreeNode>();        stack.push(root);        while(!stack.empty()) {            TreeNode tmp = stack.peek();            if(tmp.left != null) {                stack.push(tmp.left);                tmp.left = null;            }else {                tmp = stack.pop();                if(tmp.val > min) {                    min = tmp.val;                }else {                    return false;                }                if(tmp.right != null) stack.push(tmp.right);            }        }        return true;    }