Java 题解 | #重量级的一层#

重量级的一层

https://www.nowcoder.com/practice/193372871b09426ab9ea805f0fd44d5c

import java.util.*;

/*
 * public class TreeNode {
 *   int val = 0;
 *   TreeNode left = null;
 *   TreeNode right = null;
 *   public TreeNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param root TreeNode类
     * @return int整型
     */
    public int maxLevelSum (TreeNode root) {
        // write code here
        if (root == null) {
            return 0;
        }

        int maxLevel = 1; // 初始层数为1
        int maxSum = root.val; // 初始总和为根节点的值

        Queue<TreeNode> queue = new LinkedList<>();
        queue.offer(root);

        int level = 1;

        while (!queue.isEmpty()) {
            int size = queue.size();
            int sum = 0;

            for (int i = 0; i < size; i++) {
                TreeNode node = queue.poll();
                sum += node.val;

                if (node.left != null) {
                    queue.offer(node.left);
                }
                if (node.right != null) {
                    queue.offer(node.right);
                }
            }

            if (sum > maxSum) {
                maxLevel = level;
                maxSum = sum;
            }

            level++;
        }

        return maxLevel;
    }
}

这段代码使用的编程语言是Java。

该题考察的知识点是树的遍历和层次遍历。在二叉树中,层次遍历就是按照从上到下、从左到右的顺序逐层访问节点。

这段代码的解释如下:

  1. 首先,判断根节点是否为空,若为空则返回0。
  2. 初始化变量 maxLevel 和 maxSum 分别用于记录当前层数最大总和的层数和总和值。将其初始值分别设置为1和根节点的值。
  3. 创建一个队列 queue,并将根节点入队。
  4. 初始化变量 level 为1,表示当前层数。
  5. 使用 while 循环,当队列不为空时进行遍历。
  6. 在每一层的循环中,先获取当前层的节点数 size 和总和 sum,并将 sum 初始化为0。
  7. 使用 for 循环,遍历当前层的节点数。
  8. 在循环中,首先取出队列头部的节点,并将其值加到 sum 中。
  9. 如果该节点有左子节点,将左子节点入队。
  10. 如果该节点有右子节点,将右子节点入队。
  11. 循环结束后,比较当前层的总和 sum 和最大总和 maxSum 的大小。
  12. 如果 sum 大于 maxSum,则更新 maxLevel 为当前层数 level,并更新 maxSum 为当前总和 sum
  13. 增加层数 level
  14. 循环结束后,返回最大总和的层数 maxLevel

这段代码通过层次遍历的方式计算每一层的节点值之和,并记录最大节点值之和所在的层数。通过利用队列数据结构来实现层次遍历。

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务