当前位置:网站首页>LeetCode 1161.最大层内元素和:层序遍历
LeetCode 1161.最大层内元素和:层序遍历
2022-07-31 10:55:00 【Tisfy】
【LetMeFly】1161.最大层内元素和
力扣题目链接:https://leetcode.cn/problems/maximum-level-sum-of-a-binary-tree/
给你一个二叉树的根节点 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
方法一:层序遍历 + 广搜BFS
有关二叉树的层序遍历,之前已经讲过,详细方法可参考 LeetCode 0107.二叉树的层序遍历II の 题解
本题,同样地,我们使用优先队列来对二叉树进行层序遍历。
- 用变量
maxSum记录当前的单层最大和 - 用变量
ans来记录取得maxSum的最小层号 - 用变量
nowLayer记录当前遍历到的层的层号
初始值maxSum为int范围内的最小值INT_MIN,ans取任意值即可,nowLayer的值取1。
在遍历到某一层时,用一个临时变量thisSum统计这一层的节点值之和
如果这一层遍历结束后,thisSum的值大于之前所记录的最大值maxSum
那么就更新maxSum为thisSum,并将ans赋值为当前层号nowLayer。
- 时间复杂度 O ( N ) O(N) O(N),其中 N N N是节点个数。
- 空间复杂度 O ( N 2 ) O(N2) O(N2),其中 N 2 N2 N2是节点最多的一层的节点数。
AC代码
C++
class Solution {
public:
int maxLevelSum(TreeNode* root) {
int maxSum = INT_MIN;
int ans = -1;
int nowLayer = 1;
queue<TreeNode*> q;
q.push(root);
while (!q.empty()) {
int thisLayerNum = q.size(); // 这一层有几个元素
int thisSum = 0;
for (int i = 0; i < thisLayerNum; i++) {
TreeNode* thisNode = q.front();
q.pop();
thisSum += thisNode->val;
if (thisNode->left)
q.push(thisNode->left);
if (thisNode->right)
q.push(thisNode->right);
}
if (thisSum > maxSum) {
maxSum = thisSum;
ans = nowLayer;
}
nowLayer++;
}
return ans;
}
};
同步发文于CSDN,原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/126082726
边栏推荐
猜你喜欢
随机推荐
Windows系统Mysql8版本的安装教程
SQL力扣刷题七
Mybaits Frequently Asked Questions Explained
Windows安装mysql详细步骤(通俗易懂,简单上手)
半个月时间把MySQL重新巩固了一遍,梳理了一篇几万字 “超硬核” 文章!
How SQL intercepts specified characters from strings (three functions of LEFT, MID, RIGHT)
SQLServer2019 installation (Windows)
应用层基础 —— 认识URL
【Web技术】1397- 深入浅出富文本编辑器
sql力扣刷题六
Web系统常见安全漏洞介绍及解决方案-CSRF攻击
SQL——左连接(Left join)、右连接(Right join)、内连接(Inner join)
双链表的插入和删除
KVM virtualization job
Android安全专题(三)JNI混淆
浅谈Attention与Self-Attention,一起感受注意力之美
Redis - Basics
【LeetCode】36.有效的数独
Can I find a Go job in 7 days?Learn Go with arrays and pointers
Usage of JOIN in MySQL









