美文网首页
判断树是否是二叉搜索树

判断树是否是二叉搜索树

作者: Ethan_Walker | 来源:发表于2018-12-29 20:43 被阅读7次
  public boolean isValidBST(TreeNode root) {
        int[] minmax = new int[2];
        return isBST(root, minmax);
    }

    public boolean isBST(TreeNode root, int[] minmax) {
        if (root == null) { // 空树也算是 BST
            return true;
        }
        if (root.left == null && root.right == null) {
            minmax[0] = root.val;
            minmax[1] = root.val;
            return true;
        }

        // 当左子树为空时,以root为根的树的 minLeft maxLeft 的值
        int minLeft = root.val;
        int maxLeft = root.val;

        boolean result = true;
        if (root.left != null) {
            result = isBST(root.left, minmax);
            if (!result) return false;        // 左子树都不是 BST了,直接返回
            minLeft = minmax[0];
            maxLeft = minmax[1];
            // 比左子树最大值小
            if (root.val <= maxLeft) {
                return false;
            }
        }

        // 当右子树为空时,minRight、maxRight的值
        int minRight = root.val;
        int maxRight = root.val;

        if (root.right != null) {
            result = isBST(root.right, minmax);
            if (!result) return false;        // 右子树都不是 BST了,直接返回

            minRight = minmax[0];
            maxRight = minmax[1];
            if (root.val >= minRight) {
                return false;
            }
        }

        // 还能到达者说明是 BST 了
        minmax[0] = minLeft;
        minmax[1] = maxRight; // 更改以节点 root 为BST的最小值、最大值
        return true;
    }

相关文章

  • 判断一棵树是否是搜索二叉树、判断一棵树是否是完全二叉树

    题目描述 判断一棵树是否是搜索二叉树、判断一棵树是否是完全二叉树 什么是二叉查找树? 二叉查找树(Binary S...

  • Swift 验证二叉搜索树- LeetCode

    题目: 验证二叉搜索树 验证二叉搜索树给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有...

  • 二叉树常见问题

    1 判断类问题 判断类问题主要分判断二叉树是否是二叉搜索树、二叉完全树,以及两棵二叉树是否同构这三个问题。 1.1...

  • LeetCode 98. 验证二叉搜索树

    98. 验证二叉搜索树 给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点...

  • LeetCode 验证二叉搜索树

    98、验证二叉搜索树参考给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点...

  • 编程题树及递归

    判断一颗二叉树是否是二叉搜索树、二叉完全树、二叉平衡树https://www.cnblogs.com/jkzr/p...

  • 【算法】验证二叉搜索树

    验证二叉搜索树 描述 给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子...

  • LeetCode:是否是合法的二叉搜索树

    98. 验证二叉搜索树 给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左...

  • LeetCode-098-验证二叉搜索树

    验证二叉搜索树 题目描述:给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的...

  • 关于二叉树的算法题

    前序遍历中序遍历后序遍历判断是否是平衡二叉树判断是否是对称二叉树判断二叉树高度按照层遍历二叉树判断二叉树宽度

网友评论

      本文标题:判断树是否是二叉搜索树

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