1161. 最大层内元素和

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

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

示例:

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

提示:

  1. 树中的节点数介于 1 和 10^4 之间
  2. -10^5 <= node.val <= 10^5

思路:二叉树的层次遍历问题

class Solution {
public:
    void dfs(TreeNode* root, int level, vector<int> &re){
        if(!root) return;
        if(re.size()==level){
            re.push_back(0);
        }
        re[level]+=root->val;
        dfs(root->left, level+1, re);
        dfs(root->right, level+1, re);
    }

    int maxLevelSum(TreeNode* root) {
        if(!root) return 0;
        vector<int>re;
        dfs(root, 0, re);
        int ans=0;
        for(int i=1; i<re.size(); ++i){
            if(re[i]>re[ans])
                ans=i;
        }
        return ans+1;
    }
};
发布了312 篇原创文章 · 获赞 32 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/Scarlett_Guan/article/details/104066221