前面一道题的变种,加个就判断,然后选择是否翻转集合就行了
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> lists = new ArrayList<>();
LinkedList<TreeNode> treeNodes = new LinkedList<>();
treeNodes.add(root);
treeNodes.add(null);
boolean flag = false;
while (!treeNodes.isEmpty()) {
ArrayList<Integer> list = new ArrayList<>();
TreeNode node = treeNodes.removeFirst();
if (node == null) break;
while (node != null) {
list.add(node.val);
if (node.left != null) treeNodes.add(node.left);
if (node.right != null) treeNodes.add(node.right);
node = treeNodes.removeFirst();
}
treeNodes.add(null);
if (flag) {
Collections.reverse(list);
}
flag = !flag;
lists.add(list);
}
return lists;
}
}