0
点赞
收藏
分享

微信扫一扫

Day48 验证二叉搜索树

给定一个二叉树,判断其是否是一个有效的二叉搜索树

https://leetcode-cn.com/problems/validate-binary-search-tree/

假设一个二叉搜索树具有如下特征:

示例1:

示例2:

Java解法

package sj.shimmer.algorithm.y2021;

import sj.shimmer.algorithm.TreeNode;

/**
 * Created by SJ on 2021/3/14.
 */

class D48 {
    public static void main(String[] args) {
        TreeNode n6 = new TreeNode(6,null,null);
        TreeNode n3 = new TreeNode(3,null,null);
        TreeNode n4 = new TreeNode(4,n3,n6);
        TreeNode n1 = new TreeNode(1,null,null);
        TreeNode n5 = new TreeNode(5,n1,n4);
        System.out.println(isValidBST(n5));
        TreeNode n2 = new TreeNode(2,n1,n3);
        System.out.println(isValidBST(n2));
    }
    public static boolean isValidBST(TreeNode root) {
        return isValidBST(root,Long.MIN_VALUE,Long.MAX_VALUE);
    }

    public static boolean isValidBST(TreeNode node, long min, long max) {
        if (node == null) {
            return true;
        }
        if (node.val <= min || node.val >= max) {
            return false;
        }
        return isValidBST(node.left, min, node.val) && isValidBST(node.right, node.val, max);
    }
}

官方解

https://leetcode-cn.com/problems/validate-binary-search-tree/solution/yan-zheng-er-cha-sou-suo-shu-by-leetcode-solution/

  1. 递归

    • 时间复杂度:O(n)
    • 空间复杂度:O(n)
  2. 中序遍历

    • 时间复杂度:O(n)
    • 空间复杂度:O(n)
举报

相关推荐

0 条评论