• 入门力扣自学笔记109 C++ (题目编号1161)


    1161. 最大层内元素和

    题目:

    给你一个二叉树的根节点 root。根节点位于二叉树的第 1 层,而根节点的子节点位于第 2 层,依此类推。

    请返回层内元素之和 最大 的那几层(可能只有一层)的层号,并返回其中 最小 的那个。


    示例 1:

    输入:root = [1,7,0,7,-8,null,null]
    输出:2
    解释:
    第 1 层各元素之和为 1,
    第 2 层各元素之和为 7 + 0 = 7,
    第 3 层各元素之和为 7 + -8 = -1,
    所以我们返回第 2 层的层号,它的层内元素之和最大。


    示例 2:

    输入:root = [989,null,10250,98693,-89388,null,null,null,-32127]
    输出:2


    提示:

    树中的节点数在 [1, 104]范围内
    -105 <= Node.val <= 105


    来源:力扣(LeetCode)
    链接:https://leetcode.cn/problems/maximum-level-sum-of-a-binary-tree
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


    思路:

    简单的二叉树的层次遍历。


    代码:

    1. /**
    2. * Definition for a binary tree node.
    3. * struct TreeNode {
    4. * int val;
    5. * TreeNode *left;
    6. * TreeNode *right;
    7. * TreeNode() : val(0), left(nullptr), right(nullptr) {}
    8. * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
    9. * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
    10. * };
    11. */
    12. class Solution {
    13. public:
    14. int maxLevelSum(TreeNode* root) {
    15. int m=-1e9,n=0;
    16. int i=0;
    17. queue qu;
    18. qu.push(root);
    19. while(!qu.empty()){
    20. i++;
    21. int l=qu.size();
    22. int sum=0;
    23. while(l--){
    24. TreeNode* p=qu.front();
    25. qu.pop();
    26. sum+=p->val;
    27. if(p->left) qu.emplace(p->left);
    28. if(p->right) qu.emplace(p->right);
    29. }
    30. if(sum>m){
    31. m=sum;
    32. n=i;
    33. }
    34. }
    35. return n;
    36. }
    37. };

  • 相关阅读:
    节点导纳矩阵
    基于python的咖啡数据集分析
    Bootstrap Blazor Table 组件(三)智能生成
    “蔚来杯“2022牛客暑期多校训练营4
    10.4 小任务
    小型k8s
    Android MQTT
    C++设计模式:单例模式
    基于PSO优化VIC算法的WORM蠕虫检测matlab仿真
    圈复杂度 - 软件工具
  • 原文地址:https://blog.csdn.net/DK_Sorhic/article/details/126083298