# 103. Binary Tree Zigzag Level Order Traversal(Medium)
###### tags: `BFS`, `Binary Tree`, `Bloomberg`
[Link](https://leetcode.com/problems/binary-tree-zigzag-level-order-traversal/)
Description:
Given the `root` of a binary tree, return the *zigzag level order traversal of its nodes' values*. (i.e., from left to right, then right to left for the next level and alternate between).
**Solution**
* BFS
```java=
class Solution {
public List<List<Integer>> zigzagLevelOrder(TreeNode root) {
List<List<Integer>> res = new ArrayList<>();
if (root == null) {
return res;
}
Queue<Integer> q = new LinkedList<>();
q.offer(root);
boolean reverse = false;
while (!q.isEmpty()) {
int size = q.size();
List<Integer> list = new ArrayList<>();
for (int i = 0; i < size; i++) {
TreeNode node = q.poll();
if (node.left != null) q.offer(node.left);
if (node.right != null) q.offer(node.right);
if (!reverse) list.add(node.val);
else list.add(0, node.val);
}
res.add(list);
reverse = !reverse;
}
return res;
}
}
```
Time Complexity: O(N)
Space Complexity: O(N)