Day42 RedBlackTree01

  1. 给定一棵二叉树,验证它是不是二叉搜索树。

二叉搜索树的定义如下:

a.左子树结点的关键字都比根结点小。

b.右子树结点的关键字都比根节点大。

c.左子树和右子树都是二叉搜索树。

结点定义如下:

public class TreeNode {
       int val;
       TreeNode left;
       TreeNode right;
      TreeNode(int x) { val = x; }
       } 
class Solution {
  public boolean helper(TreeNode node, Integer lower, Integer upper) {
    if (node == null) return true;

    int val = node.val;
    if (lower != null && val <= lower) return false;
    if (upper != null && val >= upper) return false;

    if (! helper(node.right, val, upper)) return false;
    if (! helper(node.left, lower, val)) return false;
    return true;
  }

  public boolean isValidBST(TreeNode root) {
    return helper(root, null, null);
  }
}

发布了27 篇原创文章 · 获赞 11 · 访问量 2326

猜你喜欢

转载自blog.csdn.net/qq_43587378/article/details/105666647