Skip to content

Commit 3cae6c7

Browse files
committed
Count Good Nodes in Binary Tree - Recursive
1 parent fb32e20 commit 3cae6c7

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

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

+19
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,23 @@ public int goodNodes(TreeNode root) {
3131

3232
return result;
3333
}
34+
35+
public int goodNodesRecursive(TreeNode root) {
36+
int[] result = new int[] { 0 };
37+
if (root == null) return result[0];
38+
39+
dfs(root, Integer.MIN_VALUE, result);
40+
41+
return result[0];
42+
}
43+
44+
private void dfs(TreeNode node, int maxValue, int[] result) {
45+
if (node.getValue() >= maxValue) {
46+
maxValue = node.getValue();
47+
result[0] += 1;
48+
}
49+
50+
if (node.getLeft() != null) dfs(node.getLeft(), maxValue, result);
51+
if (node.getRight() != null) dfs(node.getRight(), maxValue, result);
52+
}
3453
}

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

+15-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package io.dksifoua.leetcode.countgoodnodesinbinarytree;
22

33
import io.dksifoua.leetcode.utils.TreeNode;
4-
import org.junit.jupiter.api.Assertions;
54
import org.junit.jupiter.api.Test;
65

76
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -15,13 +14,28 @@ void test1() {
1514
assertEquals(4, solution.goodNodes(TreeNode.build(new Integer[] { 3, 1, 4, 3, null, 1, 5 })));
1615
}
1716

17+
@Test
18+
void test1Recursive() {
19+
assertEquals(4, solution.goodNodesRecursive(TreeNode.build(new Integer[] { 3, 1, 4, 3, null, 1, 5 })));
20+
}
21+
1822
@Test
1923
void test2() {
2024
assertEquals(3, solution.goodNodes(TreeNode.build(new Integer[] { 3, 3, null, 4, 2 })));
2125
}
2226

27+
@Test
28+
void test2Recursive() {
29+
assertEquals(3, solution.goodNodesRecursive(TreeNode.build(new Integer[] { 3, 3, null, 4, 2 })));
30+
}
31+
2332
@Test
2433
void test3() {
2534
assertEquals(1, solution.goodNodes(TreeNode.build(new Integer[] { 1 })));
2635
}
36+
37+
@Test
38+
void test3Recursive() {
39+
assertEquals(1, solution.goodNodesRecursive(TreeNode.build(new Integer[] { 1 })));
40+
}
2741
}

0 commit comments

Comments
 (0)