题目描述
简单题,没什么好说的,按层次遍历,然后每层结果插入 result 结果集头部即可。
代码:
public List<List<Integer>> levelOrderBottom(TreeNode root) {
List<List<Integer>> result = new ArrayList<>();
if (root == null) return result;
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
queue.offer(null);
List<Integer> layer = new ArrayList<>();
while (!queue.isEmpty()) {
if (queue.peek() == null) {
result.add(0, layer);
queue.poll();
if (queue.isEmpty()) break;
queue.offer(null);
layer = new ArrayList<>();
continue;
}
TreeNode poll = queue.poll();
layer.add(poll.val);
if (poll.left != null) queue.offer(poll.left);
if (poll.right != null) queue.offer(poll.right);
}
return result;
}