news 2026/5/1 6:03:56

2026年--Lc340-1161. 最大层内元素和(二叉树 , 广度优先搜索bfs)--java版

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
2026年--Lc340-1161. 最大层内元素和(二叉树 , 广度优先搜索bfs)--java版

1.题目


2.思路

用bfs来遍历每一层的节点,然后对每一层的节点求和。
(1)弄一个最大值计数器,用来保存每一层的最大值
(2)while(!q.isEmpty())
q.isEmpty() 表示:q 这个列表为空(没有节点了)。

!q.isEmpty() 表示:q 不为空,还有节点要处理。

按层遍历的逻辑是:只要当前层还有节点,就继续循环;当 q 为空,说明没有下一层了,遍历结束。
List tmp = q;只是让 tmp 引用当前的 q(当前层)。
遍历 tmp(当前层)

q = new ArrayList<>();
随后把 q 换成新的空列表,用来装下一层节点。这样就能在循环里。
把孩子节点加到 q(下一层)

把计数器置为空,层级加一。
对当前层进行求和操作
遍历当前层的节点有左孩子,左孩子入队;遍历当前层的节点有右孩子,右孩子入队。

遍历结束后,用 maxSum 更新最大层和,并进入下一层。

3.代码实现

/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; * this.left = left; * this.right = right; * } * } */classSolution{publicintmaxLevelSum(TreeNoderoot){if(root==null){return0;}//1.最大值intmaxSum=Integer.MIN_VALUE;//最后的结果变量intres=0;//q用来存当前层的节点List<TreeNode>q=newArrayList<>();//层级intlevel=0;//根节点入队q.add(root);//当前层节点不空while(!q.isEmpty()){List<TreeNode>tmp=q;//tmp存储当前层的节点q=newArrayList<>();//q置空,用来存储下一层的节点intsum=0;//sum 是当前层的和for(TreeNodenode:tmp){sum=sum+node.val;if(node.left!=null){q.add(node.left);}if(node.right!=null){q.add(node.right);}// level++;如果放在遍历节点数中,导致level数按节点数增加}level++;//按层级数增加if(sum>maxSum){maxSum=sum;res=level;}}returnres;}}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 8:06:50

C语言数据类型

1、数据类型 1.1字符型 字符英文单词是character&#xff0c;在C语言中 char 表示字符类型。 char字符型------1字节 [signed] char//有符号的 unsigned char//无符号的 1.2整型 整数英文单词integer&#xff0c;在C语言中 int 表示整型。 //短整型------2字节 short [int] …

作者头像 李华
网站建设 2026/4/30 3:46:13

拼多多春节加班费热议背后,近屿智能给出了另一份高薪答案

春节临近&#xff0c;你是否也正陷入“年后再说”的循环&#xff1f;当大多数人在为年终琐事分心时&#xff0c;有一群人&#xff0c;却在默默积累着“节后爆发”的资本——他们关注的不是加班补贴&#xff0c;而是如何让自己的技能&#xff0c;配得上更高的估值。一、高薪加班…

作者头像 李华
网站建设 2026/4/30 10:57:08

java学习--ArrayList

一、什么是 ArrayListArrayList 是 java.util 包下的类&#xff0c;实现了 List 接口&#xff0c;本质是动态扩容的数组&#xff08;相比普通数组&#xff0c;它的长度可以自动调整&#xff09;。底层基于数组实现&#xff0c;支持快速随机访问&#xff08;通过索引取值&#x…

作者头像 李华
网站建设 2026/5/1 7:21:20

cocos 金色划过shader教程

视频教程 视频教程 vec4 o texture(cc_spriteTexture,uv);有图片获取图片 现在是用在label 获取字 透明部分不会获取 float beamPos mod(cc_time.x -0.3, 3.0) ; 设定圆心位置 将光柱想象成圆形 获取圆心位置 计算遍历所有像素点到圆心的距离 如果在glow代表圆的范围 如果在范…

作者头像 李华