题解 | #重量级的一层#

重量级的一层

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

知识点:二叉树,层序遍历

基本的层序遍历操作:使用队列保存每一层的节点,每次遍历一层的节点,保存所有元素的和,统计该层元素和是否为最大,若为最大,则更新答案,并保存当前层的元素和。遍历完最后一层,得到的最大元素和层即为答案。

Java题解如下:

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
        int ans = 0;
        int weight = 0;
        Deque<TreeNode> queue = new ArrayDeque<>();
        queue.offer(root);
        int count = 0;
        while(!queue.isEmpty()) {
            count++;
            int size = queue.size();
            int sum = 0;
            for(int i = 0; i < size; i++) {
                TreeNode poll = queue.poll();
                sum += poll.val;
                if(poll.left != null) queue.offer(poll.left);
                if(poll.right != null) queue.offer(poll.right);
            }
            System.out.println(count + "  " + sum);
            if(sum >= weight) {
                ans = count;
                weight = sum;
            }
        }
        return ans;
    }
}

全部评论

相关推荐

01-17 08:34
门头沟学院 Java
想找对象的单身狗在努力存钱:这工资不低了,再高点人家要招博士硕士的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务