树的BFS遍历就可以
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
// 树的BFS
int maxLevelSum(TreeNode* root) {
map<int, vector<int>> level2nums;
queue<TreeNode*> nodes;
queue<int> levels;
nodes.push(root);
levels.push(1);
while(!nodes.empty()){
if (nodes.front()->left!=NULL){
nodes.push(nodes.front()->left);
levels.push(levels.front()+1);
}
if (nodes.front()->right!=NULL){
nodes.push(nodes.front()->right);
levels.push(levels.front()+1);
}
if (level2nums.find(levels.front())==level2nums.end()){
vector<int> temp(1, nodes.front()->val);
level2nums[levels.front()] = temp;
}
else{
level2nums[levels.front()].push_back(nodes.front()->val);
}
nodes.pop();
levels.pop();
}
int maxsum = 0;
int maxlevel = 0;
for(auto it = level2nums.begin();it!=level2nums.end();it++){
vector<int> nums = it->second;
int sum=0;
for(int i=0;i<nums.size();i++){sum+=nums[i];}
if (maxsum<sum){
maxlevel = it->first;
maxsum = sum;
}
}
return maxlevel;
}
};