通过万岁!!!
- 题目:给你一个数,然后找到这个树的每一行的最大值,最后返回一个list。
- 思路:跟 513.找树左下角的值一样,就是层序遍历,在开始每一层的时候,将最大值初始化为最小值,然后每取一个就跟最大值比较一下,最后把最大值放入要返回的list中即可。
- 技巧:层序遍历
java代码
class Solution {
public List<Integer> largestValues(TreeNode root) {
if (root == null) {
return new LinkedList<>();
}
List<Integer> ans = new LinkedList<>();
Queue<TreeNode> queue = new LinkedList<>();
queue.add(root);
int size, max;
TreeNode remove;
while (!queue.isEmpty()) {
max = Integer.MIN_VALUE;
size = queue.size();
for (int i = 0; i < size; i++) {
remove = queue.remove();
max = Math.max(remove.val, max);
if (remove.left != null) {
queue.add(remove.left);
}
if (remove.right != null) {
queue.add(remove.right);
}
}
ans.add(max);
}
return ans;
}
}
- 总结:做多了其实就觉得,层序遍历是最简单的了,基本都是一定的讨论,而且代码逻辑也不负责。