在每个树行中找最大值
给定一棵二叉树的根节点 root
,请找出该二叉树中每一层的最大值。
示例1:
输入: root = [1,3,2,5,3,null,9] 输出: [1,3,9]
示例2:
输入: root = [1,2,3] 输出: [1,3]
class Solution { public List<Integer> largestValues(TreeNode root) { List<Integer> resList = new ArrayList<>(); if (root == null) return resList; Queue<TreeNode> queue = new LinkedList<>(); queue.add(root); while (!queue.isEmpty()) { int levelSize = queue.size(); int max = Integer.MIN_VALUE; //使用Integer下的最小值做为初始化 for (int i = 0; i < levelSize; i++) { TreeNode tmp = queue.poll(); max = Math.max(max, tmp.val); //Math函数做一个比较,两者中的最大值 if (tmp.left != null) queue.add(tmp.left); if (tmp.right != null) queue.add(tmp.right); } resList.add(max); //将每一行的最大值加入到resList列表中 } return resList; } } JAVA 复制 全屏
[总结]
这道题仍然是建立在层次遍历的基础上的,在最大值的比较上没有用到Max函数,没有想到用Math.max()函数最终导致题目没有做出来。