leetcode-98 验证二叉搜索树

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

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

代码实现

递归实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Solution {
public boolean isValidBST(TreeNode root) {
return isValidBST(root, null, null);
}

public boolean isValidBST(TreeNode root, TreeNode min, TreeNode max) {
if (root == null) {
return Boolean.TRUE;
}
if (min != null && root.val <= min.val) {
return Boolean.FALSE;
}
if (max != null && root.val >= max.val) {
return Boolean.FALSE;
}
return isValidBST(root.left, min, root) && isValidBST(root.right, root, max);
}
}