├── README.md └── zigzag-spiral-level-order-traversal.js /README.md: -------------------------------------------------------------------------------- 1 | # leetcode-javascript 2 | 3 | This repo contains Javascript solution for famous Leetcode problems (with code + video explanation) 4 | 5 | - **Binary Tree Zig-zag Level Order Traversal** : [Code](https://github.com/akshaymarch7/leetcode-javascript/blob/master/zigzag-spiral-level-order-traversal.js) , [Video Explanation](https://www.youtube.com/watch?v=4u--XDffIZM) 6 | 7 | 8 | Hit that `Star` button to show some ❤️ 9 | 10 | Cheers, 11 | Akshay Saini 12 | [https://akshaysaini.in](https://akshaysaini.in) 13 | -------------------------------------------------------------------------------- /zigzag-spiral-level-order-traversal.js: -------------------------------------------------------------------------------- 1 | /** 2 | Given a binary tree, return the zigzag level order traversal of its nodes' values. 3 | (ie, from left to right, then right to left for the next level and alternate between). 4 | 5 | For example: 6 | Given binary tree [3,9,20,null,null,15,7], 7 | 3 8 | / \ 9 | 9 20 10 | / \ 11 | 15 7 12 | 13 | return its zigzag level order traversal as: 14 | 15 | [ 16 | [3], 17 | [20,9], 18 | [15,7] 19 | ] 20 | ==== 21 | VIDEO EXPLANATION = https://www.youtube.com/watch?v=4u--XDffIZM 22 | ==== 23 | 24 | **/ 25 | 26 | var zigzagLevelOrder = function(root) { 27 | let results = []; 28 | const lot = (root, level) => { 29 | if(!root) return; 30 | 31 | if(results[level]) results[level].push(root.val); 32 | else results[level] = [root.val]; 33 | 34 | lot(root.left, level+1); 35 | lot(root.right, level+1); 36 | } 37 | lot(root, 0); 38 | return results.map((b,i)=>(i%2) ? b.reverse(): b); 39 | }; 40 | 41 | --------------------------------------------------------------------------------