题目
给你一个二叉树的根节点 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
解题
方法一:层序遍历
class Solution { public: int maxLevelSum(TreeNode* root) { queue<TreeNode*> q; q.push(root); int maxSum=INT_MIN; int res=1; int depth=1; while(!q.empty()){ int l=q.size(); int sum=0; for(int i=0;i<l;i++){ TreeNode* cur=q.front(); q.pop(); sum+=cur->val; if(cur->left) q.push(cur->left); if(cur->right) q.push(cur->right); } if(sum>maxSum){ maxSum=sum; res=depth; } depth++; } return res; } };