java:
注!!分行用for循环
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> res = new ArrayList<>();
if (root == null)//注!!root是空返回
return res;
LinkedList<TreeNode> que = new LinkedList<>();
que.add(root);
while (!que.isEmpty()) {
List<Integer> tem = new ArrayList<>();//注!!用来存储每层的值
int size = que.size();//注!!que是每层的值,放在for循环会不断改变
for (int i = 0; i < size; i++) {
tem.add(que.getFirst().val);//注!!每次是getFirst不是get(i)把每层的值存进tem
if (que.getFirst().left != null)//注!!空的不用存了,注意不要丢if判断
que.addLast(que.getFirst().left);
if (que.getFirst().right != null)
que.addLast(que.getFirst().right);
que.removeFirst();//pop默认是pop head
}
res.add(tem);
}
return res;
}
}