public boolean isValidBST(TreeNode root) {
return helper(root, null, null);
}
private boolean helper(TreeNode root, Integer lower, Integer upper) {
if (root == null) {
return true;
}
int val = root.val;
if (lower != null && val <= lower) {
return false;
}
if (upper != null && val >= upper) {
return false;
}
if (!helper(root.right, val, upper)) {
return false;
}
if (!helper(root.left, lower, val)) {
return false;
}
return true;
}
public boolean isValidBST2(TreeNode root) {
Stack<TreeNode> stack = new Stack<>();
double inorder = -Double.MAX_VALUE;
while(!stack.isEmpty() || root != null) {
while(root != null) {
stack.push(root);
root = root.left;
}
root = stack.pop();
if (root.val <= inorder) {
return false;
}
inorder = root.val;
root = root.right;
}
return true;
}
网友评论