层序遍历从左到右一层一层的去遍历二叉树,用队列来实现,队列先进先出,符合一层一层遍历的逻辑。题目要求按层分开,所以可以在遍历某一层的时候先记录这一层有多少个结点,这样就能实现结点分层。
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
Queue<TreeNode> queue = new ArrayDeque<>();
List<List<Integer>> res = new ArrayList<>();
if(root == null)
return res;
queue.add(root);
while (!queue.isEmpty()){
int n = queue.size();
List<Integer> temp = new ArrayList<>();
for (int i = 0; i < n; i++) {
TreeNode node = queue.poll();
temp.add(node.val);
if(node.left != null)
queue.add(node.left);
if(node.right != null)
queue.add(node.right);
}
res.add(temp);
}
return res;
}
}