# 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)