版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ChiBaoNeLiuLiuNi/article/details/55048579
515. Find Largest Element in Each Row
- User Accepted: 851
- User Tried: 878
- Total Accepted: 943
- Total Submissions: 2140
- Difficulty: Medium
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的题,每层记录一下当前层的最大值即可,值得注意的是这里当input为null时要求返回的是一个空的array,当然实际面试时返回null也不无不可
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public int[] findValueMostElement(TreeNode root) {
if(root == null) return new int[0];
List<Integer> list = new ArrayList<>();
LinkedList<TreeNode> queue = new LinkedList<>();
queue.offer(root);
while(!queue.isEmpty()){
int tmpMax = Integer.MIN_VALUE;
int size = queue.size();
for(int i = 0; i < size; i++){
TreeNode cur = queue.poll();
tmpMax = Math.max(tmpMax, cur.val);
if(cur.left != null) queue.offer(cur.left);
if(cur.right != null) queue.offer(cur.right);
}
list.add(tmpMax);
}
int[] res = new int[list.size()];
for(int j = 0; j < list.size(); j++){
res[j] = list.get(j);
}
return res;
}
}