classSolution { public List<List<Integer>> zigzagLevelOrder(TreeNode root) { if (root == null) { returnnewLinkedList<>(); }
List<List<Integer>> ans = newLinkedList<>(); List<TreeNode> treeNodes = newArrayList<>(); treeNodes.add(root); booleandirection=false;
while (!treeNodes.isEmpty()) { List<Integer> integers = newLinkedList<>(); // Left to right if (!direction) { for (TreeNode node : treeNodes) { integers.add(node.val); } } else { // Right to left for (inti= treeNodes.size() - 1; i >= 0; i--) { integers.add(treeNodes.get(i).val); } } ans.add(integers);
// Next level List<TreeNode> tmp = newLinkedList<>(treeNodes); treeNodes.clear(); for (TreeNode node : tmp) { if (node.left != null) { treeNodes.add(node.left); } if (node.right != null) { treeNodes.add(node.right); } } direction = !direction; } return ans; } }