美文网首页
二叉搜索树 - 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