You need to find the largest value in each row of a binary tree.
Example:
Input:
1
/ \
3 2
/ \ \
5 3 9
Output: [1, 3, 9]
给出一棵二叉树,让找出每层的最大值
思路:
按层遍历BFS
需要记住每层有多少个节点,方便记录每层的最大值
同时每层要记录最大值
public List<Integer> largestValues(TreeNode root) {
List<Integer> result = new ArrayList<>();
if(root == null) {
return result;
}
int rowLen = 1;
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
while(!queue.isEmpty()) {
int tmpLen = 0;
int localMax = Integer.MIN_VALUE;
for(int i = 0; i < rowLen; i++){
TreeNode tmp = queue.poll();
localMax = Math.max(localMax, tmp.val);
if(tmp.left != null) {
tmpLen ++;
queue.offer(tmp.left);
}
if(tmp.right != null) {
tmpLen ++;
queue.offer(tmp.right);
}
}
rowLen = tmpLen;
result.add(localMax);
}
return result;
}