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

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

题目描述

image.png

解题思路

  • 使用队列来存储同一层的元素
  • 使用数组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
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
相关文章
|
18天前
|
JavaScript 前端开发
剑指 Offer 31. 栈的压入、弹出序列 (javascript实现)
剑指 Offer 31. 栈的压入、弹出序列 (javascript实现)
|
18天前
|
算法 JavaScript
JS算法-二叉树的右视图
JS算法-二叉树的右视图
|
18天前
|
存储 算法 JavaScript
JS算法-二叉树的后序遍历
JS算法-二叉树的后序遍历
|
18天前
|
算法 JavaScript
JS算法-二叉树的前序遍历
JS算法-二叉树的前序遍历
|
18天前
|
算法 JavaScript
JS算法-二叉树展开转为链表
JS算法-二叉树展开转为链表
|
18天前
|
JavaScript 前端开发
JavaScript题解剑指offer : 09. 用两个栈实现队列
JavaScript题解剑指offer : 09. 用两个栈实现队列
25 0
|
存储 算法 JavaScript
JS算法之二叉树、二叉搜索树
1. 知识点简讲 • 树在前端开发中的应用场景 • 二叉树深度优先遍历 递归和迭代的JS版本 2. 二叉树相关算法 3. 二叉搜索树(BST)相关算法
|
存储 JavaScript 前端开发
《剑指 Offer(第 2 版)》队列部分 JavaScript 题解
《剑指 Offer(第 2 版)》队列部分 JavaScript 题解
|
JavaScript 前端开发 程序员
《剑指 Offer(第 2 版)》树部分JavaScript题解
《剑指 Offer(第 2 版)》树部分JavaScript题解
《剑指 Offer(第 2 版)》树部分JavaScript题解
|
存储 JavaScript 前端开发
《剑指 Offer (第 2 版)》链表部分 JavaScript 题解
《剑指 Offer (第 2 版)》链表部分 JavaScript 题解
《剑指 Offer (第 2 版)》链表部分 JavaScript 题解