java刷题-98验证二叉搜索树

Posted Anrys

tags:

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

java刷题-98验证二叉搜索树

题目

在这里插入图片描述

代码

递归

class Solution {
    public boolean isValidBST(TreeNode root) {
        return isValidBST(root, Long.MIN_VALUE, Long.MAX_VALUE);
    }
    
    private boolean isValidBST(TreeNode root, long min, long max) {
        if (root == null) return true;
        if (root.val >= max || root.val <= min) return false;
        //比较的左子树时候min<root.left<root.val即可 root.val<root.right<max即可
        return isValidBST(root.left, min, root.val) && isValidBST(root.right, root.val, max);
    }
}

中序遍历

    public boolean isValidBST(TreeNode root) {
        if(root==null) return true;
        Stack<TreeNode> stack = new Stack<TreeNode>();
        long lastVal = Long.MIN_VALUE;
        while(root!=null || !stack.isEmpty()){
            while(root!=null){
                stack.push(root);
                root=root.left;
            }
            root=stack.pop();
            if(lastVal >= root.val) return false;
            lastVal = root.val;
            root=root.right;
        }
        return true;
    }

结果

在这里插入图片描述

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

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

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

刷题-力扣-98. 验证二叉搜索树

Leetcode刷题100天—98. 验证二叉搜索树( 二叉树)—day35

Leetcode刷题100天—98. 验证二叉搜索树( 二叉树)—day35

LeetCode刷题98-中等-验证二叉搜索树