Skip to content

Commit 98bb386

Browse files
committed
feat: update leetcode solutions: No.0098. Validate Binary Search Tree
1 parent 914c31c commit 98bb386

File tree

4 files changed

+132
-12
lines changed

4 files changed

+132
-12
lines changed

solution/0000-0099/0098.Validate Binary Search Tree/README.md

+47-2
Original file line numberDiff line numberDiff line change
@@ -41,22 +41,67 @@
4141

4242
<!-- 这里可写通用的实现逻辑 -->
4343

44+
中序遍历,若是一个有效的二叉搜索树,那么遍历到的序列应该是单调递增的。所以只要比较判断遍历到的当前数是否 `>=` 上一个数即可。
45+
4446
<!-- tabs:start -->
4547

4648
### **Python3**
4749

4850
<!-- 这里可写当前语言的特殊实现逻辑 -->
4951

5052
```python
51-
53+
# Definition for a binary tree node.
54+
# class TreeNode:
55+
# def __init__(self, val=0, left=None, right=None):
56+
# self.val = val
57+
# self.left = left
58+
# self.right = right
59+
class Solution:
60+
pre = None
61+
def isValidBST(self, root: TreeNode) -> bool:
62+
if not root:
63+
return True
64+
if not self.isValidBST(root.left):
65+
return False
66+
if self.pre is not None and self.pre >= root.val:
67+
return False
68+
self.pre = root.val
69+
if not self.isValidBST(root.right):
70+
return False
71+
return True
5272
```
5373

5474
### **Java**
5575

5676
<!-- 这里可写当前语言的特殊实现逻辑 -->
5777

5878
```java
59-
79+
/**
80+
* Definition for a binary tree node.
81+
* public class TreeNode {
82+
* int val;
83+
* TreeNode left;
84+
* TreeNode right;
85+
* TreeNode() {}
86+
* TreeNode(int val) { this.val = val; }
87+
* TreeNode(int val, TreeNode left, TreeNode right) {
88+
* this.val = val;
89+
* this.left = left;
90+
* this.right = right;
91+
* }
92+
* }
93+
*/
94+
class Solution {
95+
private Integer pre = null;
96+
public boolean isValidBST(TreeNode root) {
97+
if (root == null) return true;
98+
if (!isValidBST(root.left)) return false;
99+
if (pre != null && pre >= root.val) return false;
100+
pre = root.val;
101+
if (!isValidBST(root.right)) return false;
102+
return true;
103+
}
104+
}
60105
```
61106

62107
### **...**

solution/0000-0099/0098.Validate Binary Search Tree/README_EN.md

+45-2
Original file line numberDiff line numberDiff line change
@@ -65,13 +65,56 @@
6565
### **Python3**
6666

6767
```python
68-
68+
# Definition for a binary tree node.
69+
# class TreeNode:
70+
# def __init__(self, val=0, left=None, right=None):
71+
# self.val = val
72+
# self.left = left
73+
# self.right = right
74+
class Solution:
75+
pre = None
76+
def isValidBST(self, root: TreeNode) -> bool:
77+
if not root:
78+
return True
79+
if not self.isValidBST(root.left):
80+
return False
81+
if self.pre is not None and self.pre >= root.val:
82+
return False
83+
self.pre = root.val
84+
if not self.isValidBST(root.right):
85+
return False
86+
return True
6987
```
7088

7189
### **Java**
7290

7391
```java
74-
92+
/**
93+
* Definition for a binary tree node.
94+
* public class TreeNode {
95+
* int val;
96+
* TreeNode left;
97+
* TreeNode right;
98+
* TreeNode() {}
99+
* TreeNode(int val) { this.val = val; }
100+
* TreeNode(int val, TreeNode left, TreeNode right) {
101+
* this.val = val;
102+
* this.left = left;
103+
* this.right = right;
104+
* }
105+
* }
106+
*/
107+
class Solution {
108+
private Integer pre = null;
109+
public boolean isValidBST(TreeNode root) {
110+
if (root == null) return true;
111+
if (!isValidBST(root.left)) return false;
112+
if (pre != null && pre >= root.val) return false;
113+
pre = root.val;
114+
if (!isValidBST(root.right)) return false;
115+
return true;
116+
}
117+
}
75118
```
76119

77120
### **...**
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,26 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* public class TreeNode {
4+
* int val;
5+
* TreeNode left;
6+
* TreeNode right;
7+
* TreeNode() {}
8+
* TreeNode(int val) { this.val = val; }
9+
* TreeNode(int val, TreeNode left, TreeNode right) {
10+
* this.val = val;
11+
* this.left = left;
12+
* this.right = right;
13+
* }
14+
* }
15+
*/
116
class Solution {
2-
3-
private long current = Long.MIN_VALUE;
4-
17+
private Integer pre = null;
518
public boolean isValidBST(TreeNode root) {
619
if (root == null) return true;
7-
if (isValidBST(root.left) && current < root.val) {
8-
current = root.val;
9-
return isValidBST(root.right);
10-
}
11-
return false;
20+
if (!isValidBST(root.left)) return false;
21+
if (pre != null && pre >= root.val) return false;
22+
pre = root.val;
23+
if (!isValidBST(root.right)) return false;
24+
return true;
1225
}
1326
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Definition for a binary tree node.
2+
# class TreeNode:
3+
# def __init__(self, val=0, left=None, right=None):
4+
# self.val = val
5+
# self.left = left
6+
# self.right = right
7+
class Solution:
8+
pre = None
9+
def isValidBST(self, root: TreeNode) -> bool:
10+
if not root:
11+
return True
12+
if not self.isValidBST(root.left):
13+
return False
14+
if self.pre is not None and self.pre >= root.val:
15+
return False
16+
self.pre = root.val
17+
if not self.isValidBST(root.right):
18+
return False
19+
return True

0 commit comments

Comments
 (0)