难度:中等

    题目描述:
    请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。

    示例:

    1. 给定二叉树: [3,9,20,null,null,15,7],
    2. [
    3. [3],
    4. [20,9],
    5. [15,7]
    6. ]

    解题思路:

    1. var levelOrder = function(root) {
    2. if (!root) return [];
    3. let queue = [root];
    4. let res = [];
    5. let left = true;
    6. while (queue.length > 0) {
    7. let currentLevel = [];
    8. let len = queue.length;
    9. while (len) {
    10. let cur = queue.shift();
    11. if(left){
    12. currentLevel.push(cur.val);
    13. } else {
    14. currentLevel.unshift(cur.val);
    15. }
    16. if (cur.left) queue.push(cur.left);
    17. if (cur.right) queue.push(cur.right);
    18. len--;
    19. }
    20. left = !left
    21. res.push(currentLevel);
    22. }
    23. return res;
    24. };