You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
793 B
43 lines
793 B
2 years ago
|
package class30;
|
||
|
|
||
|
public class Problem_0098_ValidateBinarySearchTree {
|
||
|
|
||
|
public static class TreeNode {
|
||
|
int val;
|
||
|
TreeNode left;
|
||
|
TreeNode right;
|
||
|
}
|
||
|
|
||
|
public boolean isValidBST(TreeNode root) {
|
||
|
if (root == null) {
|
||
|
return true;
|
||
|
}
|
||
|
TreeNode cur = root;
|
||
|
TreeNode mostRight = null;
|
||
|
Integer pre = null;
|
||
|
boolean ans = true;
|
||
|
while (cur != null) {
|
||
|
mostRight = cur.left;
|
||
|
if (mostRight != null) {
|
||
|
while (mostRight.right != null && mostRight.right != cur) {
|
||
|
mostRight = mostRight.right;
|
||
|
}
|
||
|
if (mostRight.right == null) {
|
||
|
mostRight.right = cur;
|
||
|
cur = cur.left;
|
||
|
continue;
|
||
|
} else {
|
||
|
mostRight.right = null;
|
||
|
}
|
||
|
}
|
||
|
if (pre != null && pre >= cur.val) {
|
||
|
ans = false;
|
||
|
}
|
||
|
pre = cur.val;
|
||
|
cur = cur.right;
|
||
|
}
|
||
|
return ans;
|
||
|
}
|
||
|
|
||
|
}
|