题目大意是要找出一个二叉树中每一层的最大值。
想法是,用一个BFS算法,把每层子树节点放在队列中,然后比较它们的值,找出最大的。
代码如下:
class Solution {
public List<Integer> largestValues(TreeNode root) {
Queue<TreeNode> queue = new LinkedList<TreeNode>();
List<Integer> res = new ArrayList<Integer>();
queue.add(root);
int queueSize = root == null ? 0 : 1;
while (queueSize > 0) {
int largestElement = Integer.MIN_VALUE;
for (int i=0;i<queueSize;i++) {
TreeNode cur = queue.poll();
largestElement = Math.max(cur.val, largestElement);
if (cur.left != null) queue.add(cur.left);
if (cur.right != null) queue.add(cur.right);
}
res.add(largestElement);
queueSize = queue.size();
}
return res;
}
}