### LeetCode Challenge #103. Binary Tree Zigzag Level Order Traversal

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

Example 1:

Input: root = [3,9,20,null,null,15,7]
Output: [[3],[20,9],[15,7]]

Example 2:

Input: root = [1]
Output: [[1]]

Example 3:

Input: root = []
Output: []

Constraints:

• The number of nodes in the tree is in the range [0, 2000].
• -100 <= Node.val <= 100
##### Video Solution
###### Java Solution

class Solution {
public List<List<Integer>> zigzagLevelOrder(TreeNode root) {
List<List<Integer>> ans = new ArrayList<>();
if(root==null){
return ans ;
}

List<Integer> currAns = new ArrayList<>();
Stack<TreeNode> main = new Stack<>();
Stack<TreeNode> helper = new Stack<>();
int level = 0 ;
main.push(root);
while(main.size()>0){
TreeNode currNode = main.pop();
if(level == 0 ){
if(currNode.left !=null){
helper.push(currNode.left);
}

if(currNode.right !=null){
helper.push(currNode.right);
}
}else{
if(currNode.right !=null){
helper.push(currNode.right);
}
if(currNode.left !=null){
helper.push(currNode.left);
}

}

if(main.size()==0){
currAns = new ArrayList<>();
level = 1-level ;

main = helper ;
helper = new Stack<>();
}
}
return ans ;
}
}