java:
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> res = new ArrayList<>();
if (root == null)
return res;
LinkedList<TreeNode> que = new LinkedList<>();
que.add(root);
while (!que.isEmpty()) {
List<Integer> tem = new ArrayList<>();
int size = que.size();
for (int i = 0; i < size; i++) {
tem.add(que.getFirst().val);
if (que.getFirst().left != null)
que.add(que.getFirst().left);
if (que.getFirst().right != null)
que.add(que.getFirst().right);
que.removeFirst();
}
if (res.size() % 2 == 1)//注!!发现res目前是奇数个,说明目前要存的是偶数行
reverseList(tem);//所以要reverse tem
res.add(tem);
}
return res;
}
public void reverseList(List<Integer> tem) {
int i = 0, j = tem.size() - 1;
while (i < j) {
int t = tem.get(i);
tem.set(i, tem.get(j));
tem.set(j, t);//注!!改变List元素值
i++;//注!!不要忘记移动i、j
j--;
}
}
}