Skip to content

Commit fd05f64

Browse files
committed
Validate Binary Search Tree - Recursive
1 parent b175c69 commit fd05f64

File tree

2 files changed

+33
-0
lines changed

2 files changed

+33
-0
lines changed

src/main/java/io/dksifoua/leetcode/validatebinarysearchtree/Solution.java

+13
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,17 @@ public boolean isValidBST(TreeNode root) {
2727

2828
return true;
2929
}
30+
31+
public boolean isValidBSTRecursive(TreeNode root) {
32+
return dfs(root, Long.MIN_VALUE, Long.MAX_VALUE);
33+
}
34+
35+
private boolean dfs(TreeNode node, long minValue, long maxValue) {
36+
if (node == null) return true;
37+
38+
if (node.getValue() <= minValue || node.getValue() >= maxValue) return false;
39+
40+
return dfs(node.getLeft(), minValue, (long) node.getValue())
41+
&& dfs(node.getRight(), (long) node.getValue(), maxValue);
42+
}
3043
}

src/test/java/io/dksifoua/leetcode/validatebinarysearchtree/SolutionTest.java

+20
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,38 @@ void test1() {
1515
assertTrue(solution.isValidBST(TreeNode.build(new Integer[] { 2, 1, 3 })));
1616
}
1717

18+
@Test
19+
void test1Recursive() {
20+
assertTrue(solution.isValidBSTRecursive(TreeNode.build(new Integer[] { 2, 1, 3 })));
21+
}
22+
1823
@Test
1924
void test2() {
2025
assertFalse(solution.isValidBST(TreeNode.build(new Integer[] { 5, 1, 4, null, null, 3, 6 })));
2126
}
2227

28+
@Test
29+
void test2Recursive() {
30+
assertFalse(solution.isValidBSTRecursive(TreeNode.build(new Integer[] { 5, 1, 4, null, null, 3, 6 })));
31+
}
32+
2333
@Test
2434
void test3() {
2535
assertTrue(solution.isValidBST(TreeNode.build(new Integer[] { 2147483647 })));
2636
}
2737

38+
@Test
39+
void test3Recursive() {
40+
assertTrue(solution.isValidBSTRecursive(TreeNode.build(new Integer[] { 2147483647 })));
41+
}
42+
2843
@Test
2944
void test4() {
3045
assertFalse(solution.isValidBST(TreeNode.build(new Integer[] { 2, 2, 2 })));
3146
}
47+
48+
@Test
49+
void test4Recursive() {
50+
assertFalse(solution.isValidBSTRecursive(TreeNode.build(new Integer[] { 2, 2, 2 })));
51+
}
3252
}

0 commit comments

Comments
 (0)