1161: 最大层内元素和
思路:本题需要计算每一层的节点值之和,适合用 BFS。
二叉树结构:
Definition for a binary tree node.
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode() : val(0), left(nullptr), right(nullptr) {}
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
};
维护两个信息:最大层和 maxSum,以及对应的层号 ans。如果当前层的和大于 maxSum,那么更新 maxSum 和 ans。
auto tmp=q;

class Solution {
public:
int maxLevelSum(TreeNode* root) {
int max_sum=INT_MIN;
int ans=0;
vector<TreeNode*> q={root}; //BFS
for(int level=1;!q.empty();level++){
auto tmp=q;
q.clear();
int s=0;
for(auto node:tmp){
s+=node->val;
if(node->left) q.push_back(node->left);
if(node->right) q.push_back(node->right);
}
if(s> max_sum){
max_sum=s;
ans=level;
}
}
return ans;
}
};