Skip to content

Commit a8af320

Browse files
committed
Validate Binary Search Tree
1 parent 07f1385 commit a8af320

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed
+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
class Solution {
2+
public boolean isValidBST(TreeNode root) {
3+
return (root.left == null || isValidBSTMax(root.left, root.val))
4+
&& (root.right == null || isValidBSTMin(root.right, root.val));
5+
}
6+
7+
private boolean isValidBSTMax(TreeNode root, int max) {
8+
if (root.val >= max) {
9+
return false;
10+
}
11+
12+
return (root.left == null || isValidBSTMax(root.left, root.val))
13+
&& (root.right == null || isValidBSTMinMax(root.right, root.val, max));
14+
}
15+
16+
private boolean isValidBSTMin(TreeNode root, int min) {
17+
if (root.val <= min) {
18+
return false;
19+
}
20+
21+
return (root.left == null || isValidBSTMinMax(root.left, min, root.val))
22+
&& (root.right == null || isValidBSTMin(root.right, root.val));
23+
}
24+
25+
private boolean isValidBSTMinMax(TreeNode root, int min, int max) {
26+
if (root.val >= max || root.val <= min) {
27+
return false;
28+
}
29+
30+
return (root.left == null || isValidBSTMinMax(root.left, min, root.val))
31+
&& (root.right == null || isValidBSTMinMax(root.right, root.val, max));
32+
}
33+
34+
public class TreeNode {
35+
int val;
36+
TreeNode left;
37+
TreeNode right;
38+
39+
TreeNode() {
40+
}
41+
42+
TreeNode(int val) {
43+
this.val = val;
44+
}
45+
46+
TreeNode(int val, TreeNode left, TreeNode right) {
47+
this.val = val;
48+
this.left = left;
49+
this.right = right;
50+
}
51+
}
52+
}

0 commit comments

Comments
 (0)