个人主页:五敷有你
系列专栏:算法分析与设计
⛺️稳中求进,晒太阳
给你一个二叉树的根节点 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
树的层次遍历是一种按照树的层级顺序逐层遍历节点的方法。在层次遍历中,首先访问树的根节点,然后依次访问每一层的节点,从上到下、从左到右地顺序访问。这种遍历方式通常使用广度优先搜索(BFS)算法实现。
具体步骤如下:
层次遍历的特点是,它保证了在遍历过程中,同一层的节点会先于下一层的节点被访问。这种遍历方式对于需要按层级处理树节点的情况非常有用,例如在解决本问题中,需要计算每一层节点的元素之和,因此使用层次遍历能够很方便地实现这个目标。
/**
* 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;
* }
* }
*/
class Solution {
public int maxLevelSum(TreeNode root) {
Queue queue=new LinkedList();
queue.offer(root);
int maxValue=Integer.MIN_VALUE;
int minEle=Integer.MAX_VALUE;
int minFloor=0;
int floor=0;
while (!queue.isEmpty()){
int size=queue.size();
int sum=0;
floor++;
for(int i=0;imaxValue){
maxValue=sum;
minFloor=floor;
}
}
return minFloor;
}
}