429. N 叉树的层序遍历

429. N 叉树的层序遍历

给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。

树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。

- 示例 1:输入:root = [1,null,3,2,4,null,5,6]
输出:[[1],[3,2,4],[5,6]]- 示例 2:输入:root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]
输出:[[1],[2,3,4,5],[6,7,8,9,10],[11,12,13],[14]]

提示:

  • 树的高度不会超过 1000
  • 树的节点总数在 [0, 10^4] 之间

解题思路

我们使用队列实现层序遍历,因为如果使用 ArrayList 的话,我们删除元素需要 O(n) 的时间复杂度。而队列删除元素只需要 O(1)的时间。

并且在while 循环体开始时记录队列的当前大小 size。然后用另一个循环来处理 size 数量的节点,这样我们就可以保证我们每次使队列出队的都是位于同一层的节点,并且后面入队的节点也全是位于当前层的下一层,保证 了while 循环在每一次迭代处理一层。而传统层序遍历是加入左右节点的,而这个题目里面我们是需要加入一个list的子节点,所以我们需要再使用一个循环把整个list的子节点入队。

代码

/*
// Definition for a Node.
class Node {public int val;public List<Node> children;public Node() {}public Node(int _val) {val = _val;}public Node(int _val, List<Node> _children) {val = _val;children = _children;}
};
*/class Solution {public List<List<Integer>> levelOrder(Node root) {Queue<Node>queue=new LinkedList<>();queue.add(root);List<List<Integer>> res=new ArrayList<>(); if(root==null) return res;while(!queue.isEmpty()){int size=queue.size();List<Integer> list=new ArrayList<>();for(int i=0;i<size;i++){Node node=queue.poll();list.add(node.val);for(Node cur:node.children)queue.add(cur);}res.add(list);}return res;}
}
  • 时间复杂度:O(n)。n 指的是节点的数量。
  • 空间复杂度:O(n)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/390205.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

javascript如何阻止事件冒泡和默认行为

阻止冒泡&#xff1a; 冒泡简单的举例来说&#xff0c;儿子知道了一个秘密消息&#xff0c;它告诉了爸爸&#xff0c;爸爸知道了又告诉了爷爷&#xff0c;一级级传递从而以引起事件的混乱&#xff0c;而阻止冒泡就是不让儿子告诉爸爸&#xff0c;爸爸自然不会告诉爷爷。下面的d…

89. Gray Code - LeetCode

为什么80%的码农都做不了架构师&#xff1f;>>> Question 89. Gray Code Solution 思路&#xff1a; n 0 0 n 1 0 1 n 2 00 01 10 11 n 3 000 001 010 011 100 101 110 111 Java实现&#xff1a; public List<Integer> grayCode(int n) {List&…

400. 第 N 位数字

400. 第 N 位数字 在无限的整数序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, …中找到第 n 位数字。 注意&#xff1a;n 是正数且在 32 位整数范围内&#xff08;n < 231&#xff09;。 示例 1&#xff1a; 输入&#xff1a;3 输出&#xff1a;3 示例 2&#xff1a; 输入&…

1.初识Linux

1.Linux 区分大小写 2.shell命令行-bash 进入终端->[stulocalhost~]$ (其中,Stu为登录用户名&#xff0c;localhost为登录主机名&#xff0c;’~’ 表示当前用户正处在stu用户的家目录中, 普通用户的提示符以$结尾&#xff0c;而根用户以’#’结尾) 3.Linux中所谓的命令(…

这份NLP研究进展汇总请收好,GitHub连续3天最火的都是它

最近&#xff0c;有一份自然语言处理 (NLP) 进展合辑&#xff0c;一发布就受到了同性交友网站用户的疯狂标星&#xff0c;已经连续3天高居GitHub热门榜首位。 合集里面包括&#xff0c;20多种NLP任务前赴后继的研究成果&#xff0c;以及用到的数据集。 这是来自爱尔兰的Sebasti…

基于模型的嵌入式开发流程_如何使用基于模型的测试来改善工作流程

基于模型的嵌入式开发流程Unit testing is not enough – so lets start using model-based testing to improve our workflows.单元测试还不够–因此&#xff0c;让我们开始使用基于模型的测试来改善我们的工作流程。 Software testing is an important phase in building a …

166. 分数到小数

166. 分数到小数 给定两个整数&#xff0c;分别表示分数的分子 numerator 和分母 denominator&#xff0c;以 字符串形式返回小数 。 如果小数部分为循环小数&#xff0c;则将循环的部分括在括号内。 如果存在多个答案&#xff0c;只需返回 任意一个 。 对于所有给定的输入…

最近用.NET实现DHT爬虫,全.NET实现

最近用.NET实现DHT爬虫&#xff0c;全.NET实现&#xff0c;大家可以加我QQ交流下 309159808 转载于:https://www.cnblogs.com/oshoh/p/9236186.html

C++贪吃蛇

动画链接 GitHub链接&#xff1a;https://github.com/yanpeng1314/Snake 1 #include "Snake.h"2 3 int iScore 0;4 int iGrade 1;5 6 //蛇头蛇尾初始位置7 int x_head 1, y_head 3;8 int x_tail 1, y_tail 1;9 10 //地图坐标11 int i_Map 1, j_Map 1;12 13 /…

远程办公招聘_招聘远程人才时要寻找的5种技能

远程办公招聘Remote work is a fast emerging segment of the labor market. How to embrace this shift as an employer - and find, recruit, and empower remote staff - is a question many companies and hiring managers are grappling with.远程工作是劳动力市场中快速崛…

10分钟腾讯云配置免费https

腾讯云免费证书申请地址&#xff1a; https://console.cloud.tencent... 填写相关信息 域名身份验证 文件验证 将fileauth.text 创建在网站访问根目录的 .well-known/pki-validation/目录使得 www.**.com/.well-known/pki-validation/fileauth.text 能够访问详情 等待5分钟左右…

1588. 所有奇数长度子数组的和

1588. 所有奇数长度子数组的和 给你一个正整数数组 arr &#xff0c;请你计算所有可能的奇数长度子数组的和。 子数组 定义为原数组中的一个连续子序列。 请你返回 arr 中 所有奇数长度子数组的和 。 示例 1&#xff1a; 输入&#xff1a;arr [1,4,2,5,3] 输出&#xff1…

洛谷P3195 [HNOI2008]玩具装箱TOY(单调队列优化DP)

题目描述 P教授要去看奥运&#xff0c;但是他舍不下他的玩具&#xff0c;于是他决定把所有的玩具运到北京。他使用自己的压缩器进行压缩&#xff0c;其可以将任意物品变成一堆&#xff0c;再放到一种特殊的一维容器中。P教授有编号为1...N的N件玩具&#xff0c;第i件玩具经过压…

680. 验证回文字符串 Ⅱ

680. 验证回文字符串 Ⅱ 给定一个非空字符串 s&#xff0c;最多删除一个字符。判断是否能成为回文字符串。 示例 1: 输入: s “aba” 输出: true 示例 2: 输入: s “abca” 输出: true 解释: 你可以删除c字符。 示例 3: 输入: s “abc” 输出: false 解题思路 使用…

Android--RxJava2更新体验

截止日前最新版2017-3-15: RxJava compile ‘io.reactivex:rxjava:1.2.7’ compile ‘io.reactivex:rxandroid:1.2.1’ RxJava2 compile “io.reactivex.rxjava2:rxjava:2.0.7” compile “io.reactivex.rxjava2:rxandroid:2.0.1” 1:create操作改变 Rxjava CompositeSubscri…

kotlin和java语言_Kotlin VS Java – 2020年您应该学习哪种编程语言?

kotlin和java语言It has been several years since Kotlin came out, and it has been doing well. Since it was created specifically to replace Java, Kotlin has naturally been compared with Java in many respects.自Kotlin问世以来已经有好几年了&#xff0c;而且一切…

oracle部署--安装oracle软件与部署单实例数据库

一、安装oracle数据库软件 1.创建相应的用户组及用户 groupadd oinstall groupadd oper groupadd dba useradd -g oinstall -G oper,dba oracle 2.创建oracle software安装路径 mkdir -p /u01/app/oracle/product/11.2.0/db_1 3.修改安装路径权限 chown -R oracle:oinstall …

web前端【第十一篇】jQuery属性相关操作

知识点总结 1、属性 属性&#xff08;如果你的选择器选出了多个对象&#xff0c;那么默认只会返回出第一个属性&#xff09;、 attr(属性名|属性值) - 一个参数是获取属性的值&#xff0c;两个参数是设置属性值 - 点击加载图片示例 re…

528. 按权重随机选择

528. 按权重随机选择 给定一个正整数数组 w &#xff0c;其中 w[i] 代表下标 i 的权重&#xff08;下标从 0 开始&#xff09;&#xff0c;请写一个函数 pickIndex &#xff0c;它可以随机地获取下标 i&#xff0c;选取下标 i 的概率与 w[i] 成正比。 例如&#xff0c;对于 w…

sql语句语法多表关联_SQL创建表语句-带有示例语法

sql语句语法多表关联SQL is one of the most reliable and straightforward querying languages around. It provides clear cut syntax that reads easily without abstracting away too much of the functionalitys meaning.SQL是最可靠&#xff0c;最直接的查询语言之一。 它…