[LeetCode] 98. 验证二叉搜索树

Posted 怕什么

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[LeetCode] 98. 验证二叉搜索树相关的知识,希望对你有一定的参考价值。

方法一:

long pre=Long.MIN_VALUE;
    public boolean isValidBST3(TreeNode root){
        if(root==null) return true;
        if(!isValidBST3(root.left)) return false;
        if(root.val<=pre)return false;
        pre=root.val;
        return isValidBST3(root.right);
    }

 

 方法二:

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public boolean isValidBST(TreeNode root) {
        Stack<TreeNode> stack=new Stack<>();
        double inorder=-Double.MAX_VALUE;

        while(!stack.isEmpty()||root!=null){
            while (root!=null){
                stack.push(root);
                root=root.left;
            }
            root=stack.pop();
            if(root.val<=inorder){
                return false;
            }
            inorder=root.val;
            root=root.right;
        }
        return true;
    }
}

 

 方法三:

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public boolean isValidBST(TreeNode root) {
        return helper(root,null,null);
    }

    public boolean helper(TreeNode node,Integer lower, Integer upper){
        if(node==null) return true;
        int val=node.val;
        if(lower!=null&&val<=lower) return false;
        if(upper!=null&&val>=upper) return false;
        if(!helper(node.right,val,upper)) return false;
        if(!helper(node.left,lower,val)) return false;
        return true;
    }
}

 

以上是关于[LeetCode] 98. 验证二叉搜索树的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode98. 验证二叉搜索树(递归)

[JavaScript 刷题] 树 - 验证二叉搜索树, leetcode 98

LeetCode:验证二叉搜索树98

LeetCode 98 验证二叉搜索树

LeetCode 98. 验证二叉搜索树

LeetCode 98. 验证二叉搜索树