注:本文的代码实现使用的是 JS(JavaScript),为前端中想使用JS练习算法和数据结构的小伙伴提供解题思路。

描述

给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。
树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。


示例:

输入:root = [1,null,3,2,4,null,5,6]
输出:[[1],[3,2,4],[5,6]]

解题思路

这道题只需要在二叉树的层序遍历法的基础上,在弹出某个节点后,把其所有子节点push到队列中即可。唯一不同的是,二叉树层序遍历是手动将左右节点push到队列中,而N叉树需要使用一个for循环将所有子节点push到队列中。

点击链接即可查看二叉树层序遍历算法的详解 力扣题目——102. 二叉树的层序遍历

二叉树的层序遍历代码

var levelOrder = function(root) {// 用于存放最后结果的数组let result = []// 初始化队列,若 root 为 null,则队列直接为[], 不进行 while 循环,直接返回resultlet queue = root ? [root] : []// 只要队列中存在元素,则遍历,若不存在元素,说明树已经遍历完毕,退出while(queue.length !== 0){// 存放每一层元素let temp = []// 遍历 len 个元素,即遍历这一层的所有元素for(let i = 0, len = queue.length; i < len; i++){let node = queue.shift()temp.push(node.val)// 只有不为空的时候,才需要将子节点 push 到队列中if(node.left) queue.push(node.left)if(node.right) queue.push(node.right)}result.push(temp)}return result
};

这道题目的代码

var levelOrder = function(root) {let queue = root === null ? [] : [root]let result = []while(queue.length !== 0){let nodes = []for(let i = 0, len = queue.length; i < len; i++){const node = queue.shift()nodes.push(node.val)// 使用 for 循环将当前节点的所有子节点都追加到 queue 中for(let j = 0; j < node.children.length; j++)queue.push(node.children[j])}result.push(nodes)}return result
};

力扣题目——429. N 叉树的层序遍历相关推荐

  1. 力扣刷题之二叉树的层序遍历

                                                      Welcome to you, 每日一刷系列 二叉树的层序遍历 二叉树的层序遍历II 二叉树的右视图 ...

  2. 力扣解法汇总589- N 叉树的前序遍历

    原题链接:力扣 描述: 给定一个 n 叉树的根节点  root ,返回 其节点值的 前序遍历 . n 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔(请参见示例). 示例 1 ...

  3. LeetCode 429. N叉树的层序遍历(queue)

    1. 题目 返回其层序遍历:[[1],[3,2,4],[5,6] ] 2. 解题 queue队列解题 /* // Definition for a Node. class Node { public: ...

  4. 429. N 叉树的层序遍历 c++ 队列

    给定一个 N 叉树,返回其节点值的层序遍历.(即从左到右,逐层遍历). 树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例). 输入:root = [1,null,3,2,4,nu ...

  5. 力扣429. N 叉树的层序遍历(JavaScript)

    var levelOrder = function(root) {let arr=[]let qq=[root]if(root==null){return arr}while(qq.length){l ...

  6. LeetCode429. N 叉树的层序遍历

    题目 429. N 叉树的层序遍历 给定一个 N 叉树,返回其节点值的层序遍历.(即从左到右,逐层遍历). 树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例). 示例 1: 输入 ...

  7. LeetCode每日一题:N叉树的层序遍历(No.429)

    题目:N叉树的层序遍历 给定一个 N 叉树,返回其节点值的层序遍历. (即从左到右,逐层遍历). 复制代码 示例: 例如,给定一个 3叉树 : 复制代码 返回其层序遍历: [[1],[3,2,4],[ ...

  8. 力扣题目——103. 二叉树的锯齿形层序遍历

    注:本文的代码实现使用的是 JS(JavaScript),为前端中想使用JS练习算法和数据结构的小伙伴提供解题思路. 描述 给定一个二叉树,返回其节点值的锯齿形层序遍历.(即先从左往右,再从右往左进行 ...

  9. 力扣题目——107. 二叉树的层序遍历 II

    注:本文的代码实现使用的是 JS(JavaScript),为前端中想使用JS练习算法和数据结构的小伙伴提供解题思路. 描述 给定一个二叉树,返回其节点值自底向上的层序遍历. (即按从叶子节点所在层到根 ...

最新文章

  1. java未知对象调用其某个方法_java如何调用一个方法内的对象
  2. 高考结束了,来看下QS最新全球大学排名,清华北大进前20
  3. axure7 地址选择_AxureRP8实战手册-案例7(形状:唯一选中项)
  4. boost::container模块实现分配器参数的测试程序
  5. 在 Go 语言中,如何正确的使用并发
  6. 数据库mdf和ldf文件_如何将SQL数据库文件(MDF和LDF)移动到另一个位置
  7. 亚马逊自动化仓库事故,机器人失手戳破有毒喷雾,24名工人被送医院
  8. halcon中编程运算符_R编程中的运算符
  9. 极速手游加速SDK快速指入指南+极速手游加速器SDK参考文档
  10. C语言 逻辑运算符及其优先级
  11. 论文导读 | 社交网络上的信息传播预测
  12. jeecms mysql_jeecms学习笔记
  13. Bumped Map And Normal Map
  14. Android手机扫描识别银行卡技术
  15. 正确将图片保存到相册的方法
  16. linux创建文件内容三行,Linux 文本处理三剑客
  17. workbook 读取excel表格
  18. 导数在梯度下降算法中的意义理解
  19. AUTOCAD安装未完成,某些产品无法安装
  20. ibm服务器 产品型号对应表,产品线最全 IBM中小企业服务器选型指南

热门文章

  1. PowerDesigner 中将Comment(注释)及Name(名称)内容互相COPY的VBS代码
  2. ajax如何用编号查询姓名,Ajax js 使用Ajax检测用户名是否存在
  3. 聊聊Election Algorithms
  4. iOS 不错的第三方开源库归类分享
  5. 详解jdbcTemplate和namedParameterJdbcTemplate
  6. 理解asp.net中DropDownList编辑数据源,绑定数据库数据。
  7. 编译报错程序集版本高于所引用的程序集的版本
  8. Myeclipse中web project 与java project区别
  9. 小朋友的经典造句,现在做老师的太不容易了
  10. 简化版XP按装IIS5.1实录