Day 83 of 100 Days LeetCode Challenge

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:

tree1

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();
             currAns.add(currNode.val);
             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){
                 ans.add(currAns);
                 currAns = new ArrayList<>();
                 level = 1-level ;

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

Happy Coding with edSlash