Binary Tree Zigzag Level Order Traversal Given a binary tree, return the zigzag level order traversal of its nodes’ values. (ie, from left to right, then right to left for the next level and alternate between).
For example:[3,9,20,null,null,15,7],
return its zigzag level order traversal as:
1 2 3 4 5 [   [3],   [20,9],   [15,7] ] 
题意分析 以螺旋形层序遍历我们的二叉树。和普通的层序遍历相比,螺旋形只是在原来的基础上增加一个ltr变量,而在我们每次遍历完一层之后,只需要将这个变量取反即可。
代码实现 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 var  zigzagLevelOrder = function (root ) {    if (root == null ) return  [];     let  res = [];     let  ltr = true ;     let  levelResult = [];     for (let  i = 1 ; i <= height (root); i++) {         traverseGivenLevel (root, i, ltr, levelResult);         res.push (levelResult);         ltr = !ltr;         levelResult = [];     }     return  res; }; function  traverseGivenLevel (root, i, ltr, levelResult ) {    if (root == null ) return ;     if (i == 1 ) {         levelResult.push (root.val );     } else  if (i > 1 ) {         if (ltr) {             traverseGivenLevel (root.left , i - 1 , ltr, levelResult);             traverseGivenLevel (root.right , i - 1 , ltr, levelResult);         } else  {             traverseGivenLevel (root.right , i - 1 , ltr, levelResult);             traverseGivenLevel (root.left , i - 1 , ltr, levelResult);         }     } } function  height (root ) {    if (root == null ) return  0 ;     let  lheight = height (root.left );     let  rheight = height (root.right );     return  lheight > rheight ? lheight + 1  : rheight + 1 ; } 
参考https://www.geeksforgeeks.org/level-order-traversal-in-spiral-form/