1. var zigzagLevelOrder = function(root) {
    2. if (!root) {
    3. return [];
    4. }
    5. const ans = [];
    6. const nodeQueue = [root];
    7. let isOrderLeft = true;
    8. while (nodeQueue.length) {
    9. let levelList = [];
    10. const size = nodeQueue.length;
    11. for (let i = 0; i < size; ++i) {
    12. const node = nodeQueue.shift();
    13. if (isOrderLeft) {
    14. levelList.push(node.val);
    15. } else {
    16. levelList.unshift(node.val);
    17. }
    18. if (node.left !== null) {
    19. nodeQueue.push(node.left);
    20. }
    21. if (node.right !== null) {
    22. nodeQueue.push(node.right);
    23. }
    24. }
    25. ans.push(levelList);
    26. isOrderLeft = !isOrderLeft;
    27. }
    28. return ans;
    29. };