leetcode 1161(BFS)

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;
    }
};
相关推荐
灵感__idea7 小时前
Hello 算法:贪心的世界
前端·javascript·算法
澈2078 小时前
深入浅出C++滑动窗口算法:原理、实现与实战应用详解
数据结构·c++·算法
ambition202429 小时前
从暴力搜索到理论最优:一道任务调度问题的完整算法演进历程
c语言·数据结构·c++·算法·贪心算法·深度优先
cmpxr_9 小时前
【C】原码和补码以及环形坐标取模算法
c语言·开发语言·算法
qiqsevenqiqiqiqi9 小时前
前缀和差分
算法·图论
代码旅人ing9 小时前
链表算法刷题指南
数据结构·算法·链表
Yungoal9 小时前
常见 时间复杂度计算
c++·算法
6Hzlia9 小时前
【Hot 100 刷题计划】 LeetCode 48. 旋转图像 | C++ 矩阵变换题解
c++·leetcode·矩阵
不爱吃炸鸡柳10 小时前
单链表专题(完整代码版)
数据结构·算法·链表
CylMK10 小时前
题解:AT_abc382_d [ABC382D] Keep Distance
算法