- 给定一棵二叉树,验证它是不是二叉搜索树。
二叉搜索树的定义如下:
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);
}
}