# 1161. Maximum Level Sum of a Binary Tree
###### tags: `leetcode`
## Description
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: root = [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.
- Example 2:
>Input: root = [989,null,10250,98693,-89388,null,null,null,-32127]
Output: 2
- Constraints:
>The number of nodes in the tree is in the range [1, 104].
-105 <= Node.val <= 105
## Solution
- The problem is a typical `BFS`
- Use a queue to store all the values in the same level. Calculate the current level value and keep the maximum score
```cpp=
queue<TreeNode*> q;
q.push(root);
```
- When checking for each level, check the size to make sure the stuff from next level would not be iterated in the inner loop
```cpp=
temp = 0;
len = q.size();
while (len--)
```
- In the inner loop, get each of the node and add up. Put the child into the queue again to make them be gone through the next iteration
```cpp=
cur = q.front();
q.pop();
temp += cur->val;
if (cur->left != NULL) q.push(cur->left);
if (cur->right != NULL) q.push(cur->right);
```
- After, check the value and update the answer for level value if necessary
```cpp=
if (val < temp)
{
ans = level;
val = temp;
}
```