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;
        }
        LinkedList<TreeNode> queue = new LinkedList<>();
        queue.add(root);
        int weight = root.val;
        int level = 0;
        int max_level = 1;
        while (!queue.isEmpty()) {
            int size = queue.size();
            int index = 0;
            int level_weight = 0;
            while (index < size) {
                TreeNode node = queue.removeFirst();
                level_weight += node.val;
                index++;
                if (node.left != null) {
                    queue.addLast(node.left);
                }
                if (node.right != null) {
                    queue.addLast(node.right);
                }
            }
            level++;
            if(level_weight>=weight){
                max_level = level;
                weight = level_weight;
            }
        }
        return max_level;

    }
}

本题主要考察二叉树的层级遍历,所用编程语言为java.只要弄清楚二叉树的层级遍历此题并不难,我们只需要对二叉树进行层级遍历,得到每一层的权值之和就能知道最大权值是哪一层