Merge pull request #112 from Joshua-Lu/patch-30

更新 0098.验证二叉搜索树 Java版本
This commit is contained in:
Carl Sun
2021-05-14 11:00:52 +08:00
committed by GitHub

View File

@ -254,21 +254,58 @@ public:
Java
```java
```Java
class Solution {
// 递归
TreeNode max;
public boolean isValidBST(TreeNode root) {
return isValidBST_2(root, Long.MIN_VALUE, Long.MAX_VALUE);
if (root == null) {
return true;
}
// 左
boolean left = isValidBST(root.left);
if (!left) {
return false;
}
// 中
if (max != null && root.val <= max.val) {
return false;
}
max = root;
// 右
boolean right = isValidBST(root.right);
return right;
}
}
public boolean isValidBST_2 (TreeNode root, long lo, long hi) {
if (root == null) return true;
if (root.val >= hi || root.val <= lo) return false;
return isValidBST_2(root.left,lo,root.val) && isValidBST_2(root.right,root.val,hi);
class Solution {
// 迭代
public boolean isValidBST(TreeNode root) {
if (root == null) {
return true;
}
Stack<TreeNode> stack = new Stack<>();
TreeNode pre = null;
while (root != null || !stack.isEmpty()) {
while (root != null) {
stack.push(root);
root = root.left;// 左
}
// 中,处理
TreeNode pop = stack.pop();
if (pre != null && pop.val <= pre.val) {
return false;
}
pre = pop;
root = pop.right;// 右
}
return true;
}
}
```
Python