一个建议,想做技术的多刷算法,这是某公司笔试的原题。
广度优先搜索就可以实现二叉树每一层的遍历,通常都用队列来实现。队列保存未被检测的结点,结点按宽度优先的次序被访问和进出队列。
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public List<Integer> largestValues(TreeNode root) {
Queue<TreeNode> queue=new LinkedList<>();
List<Integer> list=new ArrayList<>();
queue.add(root);
int queueSize=root== null ? 0:1;
while(queueSize > 0){
int max=Integer.MIN_VALUE;
for(int i=0; i< queueSize; i++){
TreeNode n=queue.poll();
if(n.val > max)
max=n.val;
if(n.left != null)
queue.add(n.left);
if(n.right != null)
queue.add(n.right);
}
list.add(max);
queueSize=queue.size();
}
return list;
}
}