【剑指offer】 从上到下打印二叉树 III

  |   0 评论   |   0 浏览

题目

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

我的答案

/**
 * 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) {
    var result = [];
    if (!root) {
        return result;
    }
    let currentLevel = [root];
    let nextLevel = [];
    let leftToRight = true;
    let levelTemp = [];
    while (currentLevel.length) {
        if (leftToRight) {//从左到右
            const node = currentLevel.shift();
            levelTemp.push(node.val);
            if (node.left) {
                nextLevel.push(node.left);
            }
            if (node.right) {
                nextLevel.push(node.right);
            }
        } else {//从右到左
            const node = currentLevel.pop();
            levelTemp.push(node.val);
            if (node.right) {
                nextLevel.unshift(node.right);
            }
            if (node.left) {
                nextLevel.unshift(node.left);
            }

        }
        if (!currentLevel.length) {
            currentLevel = nextLevel;
            nextLevel = [];
            leftToRight = !leftToRight;
            result.push(levelTemp);
            levelTemp = [];
        }
    }
    return result;
};

思想:

其实思路和上一篇从上到下打印二叉树差不多,唯一有区别的就是currentLevel和nextLevel的取元素和放元素的方法不同。这里只需要耐心的推理一下就好了。

记录下我的高光时刻(主要是运气)

截屏20210907上午12.36.40.png


标题:【剑指offer】 从上到下打印二叉树 III
作者:limanting
地址:https://blog.manxiaozhi.com/articles/2021/09/07/1630946752630.html