09_每个行中找最大值
在每个树行中找最大值
给定一棵二叉树的根节点 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;
}
}
[总结]
这道题仍然是建立在层次遍历的基础上的,在最大值的比较上没有用到Max函数,没有想到用Math.max()函数最终导致题目没有做出来。