Given the root of a binary tree, the level of its root is 1, the level of its children is 2, and so on.
Return the smallest level X such that the sum of all the values of nodes at level X is maximal.
Example 1:
Input: [1,7,0,7,-8,null,null] Output: 2 Explanation: Level 1 sum = 1. Level 2 sum = 7 + 0 = 7. Level 3 sum = 7 + -8 = -1. So we return the level with the maximum sum which is level 2.
Note:
- The number of nodes in the given tree is between
1and10^4. -10^5 <= node.val <= 10^5
Companies:
Google
Related Topics:
Graph
// OJ: https://leetcode.com/problems/maximum-level-sum-of-a-binary-tree/
// Author: github.com/lzl124631x
// Time: O(N)
// Space: O(N)
class Solution {
public:
int maxLevelSum(TreeNode* root) {
if (!root) return 0;
int maxSum = 0, ans = 0, lv = 1;
queue<TreeNode*> q;
q.push(root);
while (q.size()) {
int cnt = q.size(), sum = 0;
while (cnt--) {
auto node = q.front();
q.pop();
sum += node->val;
if (node->left) q.push(node->left);
if (node->right) q.push(node->right);
}
if (sum > maxSum) {
maxSum = sum;
ans = lv;
}
++lv;
}
return ans;
}
};