当前位置:网站首页>1161. 最大层内元素和 : 层序遍历运用题
1161. 最大层内元素和 : 层序遍历运用题
2022-07-31 17:31:00 【宫水三叶的刷题日记】
题目描述
这是 LeetCode 上的 1161. 最大层内元素和 ,难度为 中等。
Tag : 「层序遍历」、「BFS」
给你一个二叉树的根节点 root。设根节点位于二叉树的第 层,而根节点的子节点位于第 层,依此类推。
请返回层内元素之和 最大 的那几层(可能只有一层)的层号,并返回其中 最小 的那个。
示例 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
提示:
树中的节点数在 范围内
层序遍历
根据题意,使用 BFS 进行层序遍历即可。
每次以「层」为单位进行拓展,统计该层的元素和,维护处理过程中的最大值层数和,以及层深度。
Java 代码:
class Solution {
public int maxLevelSum(TreeNode root) {
Deque<TreeNode> d = new ArrayDeque<>();
int max = -0x3f3f3f3f, depth = 1, ans = 0;
d.addLast(root);
while (!d.isEmpty()) {
int sz = d.size(), cur = 0;
while (sz-- > 0) {
TreeNode t = d.pollFirst();
if (t.left != null) d.addLast(t.left);
if (t.right != null) d.addLast(t.right);
cur += t.val;
}
if (cur > max) {
max = cur; ans = depth;
}
depth++;
}
return ans;
}
}
TypeScript 代码:
function maxLevelSum(root: TreeNode | null): number {
const d: TreeNode[] = new Array<TreeNode>()
let he = 0, ta = 0
d[ta++] = root
let max = -0x3f3f3f3f, depth = 1, ans = 0
while (he < ta) {
let sz = ta - he, cur = 0
while (sz-- > 0) {
const t = d[he++]
if (t.left != null) d[ta++] = t.left
if (t.right != null) d[ta++] = t.right
cur += t.val
}
if (cur > max) {
max = cur; ans = depth
}
depth++
}
return ans
};
时间复杂度: 空间复杂度:
最后
这是我们「刷穿 LeetCode」系列文章的第 No.1161 篇,系列开始于 2021/01/01,截止于起始日 LeetCode 上共有 1916 道题目,部分是有锁题,我们将先把所有不带锁的题目刷完。
在这个系列文章里面,除了讲解解题思路以外,还会尽可能给出最为简洁的代码。如果涉及通解还会相应的代码模板。
为了方便各位同学能够电脑上进行调试和提交代码,我建立了相关的仓库:https://github.com/SharingSource/LogicStack-LeetCode 。
在仓库地址里,你可以看到系列文章的题解链接、系列文章的相应代码、LeetCode 原题链接和其他优选题解。
更多更全更热门的「笔试/面试」相关资料可访问排版精美的 合集新基地
边栏推荐
- MySQL---运算符
- Chinese encoding Settings and action methods return values
- 智能垃圾桶(八)——红外对管传感器(树莓派pico)
- BOW/DOM(上)
- 每日练习------随机产生一个1-100之间的整数,看能几次猜中。要求:猜的次数不能超过7次,每次猜完之后都要提示“大了”或者“小了”。
- INeuOS industrial Internet operating system, the equipment operational business and "low code" form development tools
- [pytorch] 1.7 pytorch and numpy, tensor and array conversion
- 学生管理系统第一天:完成登录退出操作逻辑 PyQt5 + MySQL5.8
- 多数据中心操作和检测并发写入
- 常用的安全渗透测试工具(渗透测试工具)
猜你喜欢

仿生毛毛虫机器人源码

AcWing 1282. 搜索关键词 题解((AC自动机)Trie+KMP)+bfs)

MySQL---多表查询

35道MySQL面试必问题图解,这样也太好理解了吧

动态规划(一)

【pytorch】pytorch 自动求导、 Tensor 与 Autograd

35 MySQL interview questions and diagrams, this is also easy to understand

MySQL---子查询

ECCV 2022 华科&ETH提出首个用于伪装实例分割的一阶段Transformer的框架OSFormer!代码已开源!...

MySQL---Subqueries
随机推荐
保证接口数据安全的10种方式
UVM RAL模型和内置seq
牛客网刷题(二)
最新神作!阿里巴巴刚出炉的面试参考指南(泰山版),我直接狂刷29天
Kotlin协程:续体、续体拦截器、调度器
Get Douyin Video Details API
上传图片-微信小程序(那些年的坑记录2022.4)
MySQL---基本的select语句
MATLAB程序设计与应用 2.4 MATLAB常用内部函数
多数据中心操作和检测并发写入
iNeuOS工业互联网操作系统,设备运维业务和“低代码”表单开发工具
Last write wins (discards concurrent writes)
Flutter 获取状态栏statusbar的高度
AcWing 1282. Search Keyword Problem Solution ((AC Automata) Trie+KMP)+bfs)
宁波大学NBU IT项目管理期末考试知识点整理
Go record - slice
flowable工作流所有业务概念
MySQL---排序与分页
九齐ny3p系列语音芯片替代国产方案KT148A性价比更高420秒长度
Verilog实现占空比为5/18的9分频