23 {
24 if (!root)
25 return 0;
26
27 queue<pair<TreeNode*, int>> node_queue;
28 node_queue.push({root, 1});
29
30 int maximal_sum = root->
val;
31 int sum_level = 1;
32
33 int current_sum = 0;
34 int current_level_sum = 1;
35
36 while (!node_queue.empty())
37 {
38 TreeNode* current = node_queue.front().first;
39 int level = node_queue.front().second;
40
41 if (level != current_level_sum)
42 {
43 if (current_sum > maximal_sum)
44 {
45 maximal_sum = current_sum;
46 sum_level = current_level_sum;
47 }
48 current_level_sum = level;
49 current_sum = current->
val;
50 }
51 else
52 current_sum += current->
val;
53
54 node_queue.pop();
56 node_queue.push({current->
left, level + 1});
58 node_queue.push({current->
right, level + 1});
59 }
60 if (current_sum > maximal_sum)
61 {
62 maximal_sum = current_sum;
63 sum_level = current_level_sum;
64 }
65
66 return sum_level;
67 }
Definition for a binary tree node.