题目:在每个树行中找最大值 middle
您需要在二叉树的每一行中找到最大的值。
示例:
输入:
1
/ \
3 2
/ \ \
5 3 9
输出: [1, 3, 9]
思路:
经典bfs,只需再每层遍历时比较找出每层的最大值
package leetCode.BFS;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.List;
public class lc_bfs_515_largestValues {
public List<Integer> largestValues(TreeNode root) {
List<Integer> ans = new ArrayList<>();
if (root == null)
return ans;
ArrayDeque<TreeNode> q = new ArrayDeque<>();
q.offer(root);
int max = 0;
while (!q.isEmpty()) {
int size = q.size();
max = q.peek().val;//遍历每层时将最大值初始化为第一个
for (int i = 0; i < size; i++) {
TreeNode cur = q.poll();
if (cur.val > max)
max = cur.val;
if (cur.left != null)
q.offer(cur.left);
if (cur.right != null)
q.offer(cur.right);
}
ans.add(max);
}
return ans;
}
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) {
val = x;
}
}
}