@@ -68,13 +68,135 @@ Node 3 -> (3,1,3) is the maximum value in the path.</pre>
68
68
### ** Python3**
69
69
70
70
``` python
71
-
71
+ # Definition for a binary tree node.
72
+ # class TreeNode:
73
+ # def __init__(self, val=0, left=None, right=None):
74
+ # self.val = val
75
+ # self.left = left
76
+ # self.right = right
77
+ class Solution :
78
+ def goodNodes (self , root : TreeNode) -> int :
79
+ def dfs (root , mx ):
80
+ if root is None :
81
+ return
82
+ nonlocal ans
83
+ if mx <= root.val:
84
+ ans += 1
85
+ mx = root.val
86
+ dfs(root.left, mx)
87
+ dfs(root.right, mx)
88
+
89
+ ans = 0
90
+ dfs(root, - 10000 )
91
+ return ans
72
92
```
73
93
74
94
### ** Java**
75
95
76
96
``` java
97
+ /**
98
+ * Definition for a binary tree node.
99
+ * public class TreeNode {
100
+ * int val;
101
+ * TreeNode left;
102
+ * TreeNode right;
103
+ * TreeNode() {}
104
+ * TreeNode(int val) { this.val = val; }
105
+ * TreeNode(int val, TreeNode left, TreeNode right) {
106
+ * this.val = val;
107
+ * this.left = left;
108
+ * this.right = right;
109
+ * }
110
+ * }
111
+ */
112
+ class Solution {
113
+ private int ans;
114
+
115
+ public int goodNodes (TreeNode root ) {
116
+ ans = 0 ;
117
+ dfs(root, - 10000 );
118
+ return ans;
119
+ }
120
+
121
+ private void dfs (TreeNode root , int mx ) {
122
+ if (root == null ) {
123
+ return ;
124
+ }
125
+ if (mx <= root. val) {
126
+ ++ ans;
127
+ mx = root. val;
128
+ }
129
+ dfs(root. left, mx);
130
+ dfs(root. right, mx);
131
+ }
132
+ }
133
+ ```
134
+
135
+ ### ** C++**
136
+
137
+ ``` cpp
138
+ /* *
139
+ * Definition for a binary tree node.
140
+ * struct TreeNode {
141
+ * int val;
142
+ * TreeNode *left;
143
+ * TreeNode *right;
144
+ * TreeNode() : val(0), left(nullptr), right(nullptr) {}
145
+ * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
146
+ * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
147
+ * };
148
+ */
149
+ class Solution {
150
+ public:
151
+ int ans;
152
+
153
+ int goodNodes(TreeNode* root) {
154
+ ans = 0;
155
+ dfs(root, -10000);
156
+ return ans;
157
+ }
158
+
159
+ void dfs (TreeNode* root, int mx) {
160
+ if (!root) return;
161
+ if (mx <= root->val)
162
+ {
163
+ ++ans;
164
+ mx = root->val;
165
+ }
166
+ dfs(root->left, mx);
167
+ dfs(root->right, mx);
168
+ }
169
+ };
170
+ ```
77
171
172
+ ### **Go**
173
+
174
+ ```go
175
+ /**
176
+ * Definition for a binary tree node.
177
+ * type TreeNode struct {
178
+ * Val int
179
+ * Left *TreeNode
180
+ * Right *TreeNode
181
+ * }
182
+ */
183
+ func goodNodes(root *TreeNode) int {
184
+ ans := 0
185
+ var dfs func(root *TreeNode, mx int)
186
+ dfs = func(root *TreeNode, mx int) {
187
+ if root == nil {
188
+ return
189
+ }
190
+ if mx <= root.Val {
191
+ ans++
192
+ mx = root.Val
193
+ }
194
+ dfs(root.Left, mx)
195
+ dfs(root.Right, mx)
196
+ }
197
+ dfs(root, -10000)
198
+ return ans
199
+ }
78
200
```
79
201
80
202
### ** ...**
0 commit comments