File tree Expand file tree Collapse file tree 1 file changed +33
-0
lines changed Expand file tree Collapse file tree 1 file changed +33
-0
lines changed Original file line number Diff line number Diff line change
1
+ // Time: O(n)
2
+ // Space: O(h)
3
+
4
+ /* *
5
+ * Definition for a binary tree node.
6
+ * struct TreeNode {
7
+ * int val;
8
+ * TreeNode *left;
9
+ * TreeNode *right;
10
+ * TreeNode(int x) : val(x), left(NULL), right(NULL) {}
11
+ * };
12
+ */
13
+ class Solution {
14
+ public:
15
+ double maximumAverageSubtree (TreeNode* root) {
16
+ double result = 0.0 ;
17
+ maximumAverageSubtreeHelper (root, &result);
18
+ return result;
19
+ }
20
+
21
+ private:
22
+ pair<double , double > maximumAverageSubtreeHelper (TreeNode *root, double *result) {
23
+ if (!root) {
24
+ return {0 , 0 };
25
+ }
26
+ const auto & [s1, n1] = maximumAverageSubtreeHelper (root->left , result);
27
+ const auto & [s2, n2] = maximumAverageSubtreeHelper (root->right , result);
28
+ const auto & s = s1 + s2 + root->val ;
29
+ const auto & n = n1 + n2 + 1 ;
30
+ *result = max (*result, s / n);
31
+ return {s, n};
32
+ }
33
+ };
You can’t perform that action at this time.
0 commit comments