JS 剑指 Offer 32 - III. 从上到下打印二叉树 III

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

例如:
给定二叉树: [3,9,20,null,null,15,7],
JS 剑指 Offer 32 - III. 从上到下打印二叉树 III_第1张图片
返回其层次遍历结果:
[
[3],
[20,9],
[15,7]
]

在JS 剑指 Offer 32 - II. 从上到下打印二叉树 II的基础上加一个翻转的判断条件即可:

/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {TreeNode} root
 * @return {number[][]}
 */
var levelOrder = function(root) {
    let count = 0; //当前的层数
    let list = [root];
    let result = [];  // 最终的结果
    while(list.length){
        if(!root) return [];
        result[count] = [];  // 第count层的结果
        let countNum = list.length; // 第count层的节点数
        while(countNum --){
            let temp = list.shift();
            result[count].push(temp.val);
            if(temp.left) list.push(temp.left);
            if(temp.right) list.push(temp.right);
        }
        if(count%2){
            result[count].reverse();
        }
        count++;
    }
    return result;
};

你可能感兴趣的:(剑指Offer刷题)