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.只要弄清楚二叉树的层级遍历此题并不难,我们只需要对二叉树进行层级遍历,得到每一层的权值之和就能知道最大权值是哪一层