剑指Offer——从上到下打印二叉树(JS实现)

题目描述

剑指Offer——从上到下打印二叉树(JS实现)

解题思路

  • 使用队列来存储同一层的元素
  • 使用数组1来存放同一层元素的所有值
  • 使用数组2来存放用一层元素的所有指针
  • 将数组1放进结果列表
  • 将数组2所有元素的左右孩子放进队列,当队列的长度不为零的时候继续循环。

实现代码

var levelOrder = function (root) {
    // 如果系统给的根元素为空,直接返回
    if (!root) return [];
    // 定义一个队列用于存放同一层的元素
    let queue = [];
    // 首先让根元素入队
    queue.push(root);
    // 只要队中有元素就进入循环
    // 定义最终结果数组
    const res = [];
    while (queue.length !== 0) {
        // res.push([...queue]);
        const temp = [];
        const temp2 = []
        // 队列首元素出队
        while (queue[0]) {
            temp2.push(queue[0].val);
            temp.push(queue.shift())
        }
        res.push(temp2);
        while (temp[0]) {
            if (temp[0].left !== null) queue.push(temp[0].left);
            if (temp[0].right !== null) queue.push(temp[0].right);
            temp.shift();
        }
    }
    return res;
};

作者:Always_positive
链接:https://juejin.cn/post/6948663693873791006
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
上一篇:关于分布式锁的面试题都在这里了


下一篇:小议解耦合--应用设计模式