美文网首页
二叉搜索树 - LeetCode 98.验证二叉搜索树

二叉搜索树 - LeetCode 98.验证二叉搜索树

作者: 我阿郑 | 来源:发表于2023-12-13 11:33 被阅读0次

    给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树

    有效二叉搜索树定义如下:

    • 节点的左子树只包含 小于 当前节点的数。
    • 节点的右子树只包含 大于 当前节点的数。
    • 所有左子树和右子树自身必须也是二叉搜索树。

    解题思路:中序遍历时,判断当前节点是否大于中序遍历的前一个节点(前继节点),如果大于,说明满足 BST,继续遍历;否则直接返回 false

    class Solution {
        long pre = Long.MIN_VALUE;
        public boolean isValidBST(TreeNode root) {
            if (root == null) {
                return true;
            }
            // 访问左子树
            if (!isValidBST(root.left)) {
                return false;
            }
            // 访问当前节点:如果当前节点小于等于中序遍历的前一个节点  
           // 说明不满足BST,返回 false;否则继续遍历。
            if (root.val <= pre) {
                return false;
            }
            pre = root.val;
            // 访问右子树
            return isValidBST(root.right);
        }
    }
    
    class Solution {
        TreeNode prev = null; // 前继节点
        public boolean isValidBST(TreeNode root) {
            if(root == null) {
                return true;
            }
            this.prev = null;
            return helper(root);
        }
        public boolean helper(TreeNode root){
            if(root == null) return true;
            if(!helper(root.left)){
                return false;
            }
            if(prev != null && prev.val >= root.val) {
                return false;
            }
            prev = root;
            return helper(root.right);
        }
    }
    

    相关文章

      网友评论

          本文标题:二叉搜索树 - LeetCode 98.验证二叉搜索树

          本文链接:https://www.haomeiwen.com/subject/zjhmgdtx.html