
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
// 队列用于层序遍历
Queue<TreeNode> queue = new LinkedList<>();
// 二维数组用于存放每一层的所有节点
List<List<Integer>> res = new ArrayList<>();
// 根节点入队
if(root != null) queue.add(root);
while(!queue.isEmpty()) {
// 存放每一层的结点
List<Integer> tmp = new ArrayList<>();
// queue.size()为当前层的结点数
for(int i = queue.size(); i > 0; i --) {
TreeNode node = queue.poll(); // 删除并返回队头的元素
tmp.add(node.val);
// 左孩子不空则放入队列
if(node.left != null) queue.add(node.left);
// 右孩子不空则放入队列
if(node.right != null) queue.add(node.right);
}
res.add(tmp); // 将该层的所有节点加入res中
}
return res;
}
}