Skip to content

Commit bc43b8c

Browse files
committed
1448. Count Good Nodes in Binary Tree
1 parent 723fe55 commit bc43b8c

File tree

1 file changed

+66
-0
lines changed

1 file changed

+66
-0
lines changed
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* class TreeNode(_value: Int = 0, _left: TreeNode = null, _right: TreeNode = null) {
4+
* var value: Int = _value
5+
* var left: TreeNode = _left
6+
* var right: TreeNode = _right
7+
* }
8+
*/
9+
10+
class TreeNode(
11+
_value: Int = 0,
12+
_left: TreeNode = null,
13+
_right: TreeNode = null
14+
) {
15+
var value: Int = _value
16+
var left: TreeNode = _left
17+
var right: TreeNode = _right
18+
}
19+
20+
21+
object Solution {
22+
def goodNodes(root: TreeNode): Int = {
23+
def dfs(node: TreeNode, max: Int): Int = {
24+
if (node == null) 0 else {
25+
val isGood = if (node.value >= max) 1 else 0
26+
val newMax = Math.max(max, node.value)
27+
isGood + dfs(node.left, newMax) + dfs(node.right, newMax)
28+
}
29+
}
30+
dfs(root, Int.MinValue)
31+
}
32+
}
33+
34+
35+
36+
val tree1 = new TreeNode(3,
37+
new TreeNode(5, new TreeNode(6), new TreeNode(7)),
38+
new TreeNode(1,
39+
new TreeNode(4),
40+
new TreeNode(2,
41+
new TreeNode(9),
42+
new TreeNode(11,
43+
new TreeNode(8),
44+
new TreeNode(10)
45+
)
46+
)
47+
)
48+
)
49+
50+
51+
val tree2 = new TreeNode(4, new TreeNode(3), new TreeNode(2))
52+
val tree3 = new TreeNode(
53+
2,
54+
null,
55+
new TreeNode(
56+
4,
57+
new TreeNode(10),
58+
new TreeNode(
59+
8,
60+
null,
61+
new TreeNode(4)
62+
)
63+
)
64+
)
65+
66+
Solution.goodNodes(tree3)

0 commit comments

Comments
 (0)