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