当前位置:网站首页>LeetCode_多叉树_中等_429.N 叉树的层序遍历
LeetCode_多叉树_中等_429.N 叉树的层序遍历
2022-08-03 10:03:00 【小城老街】
1.题目
给定一个 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]]
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/n-ary-tree-level-order-traversal
2.思路
(1)层序遍历
本题与102.二叉树的层序遍历这题十分相似,只不过遍历的对象由二叉树变为了多叉树,但是核心的遍历思想还是一样的,即通过 while 循环控制从上向下方向的遍历,以及 for 循环控制每一层从左向右的遍历。
3.代码实现(Java)
//思路1————层序遍历
/* // 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) {
// res 用于保存最终的结果
List<List<Integer>> res = new ArrayList<>();
if (root == null) {
return res;
}
// queue 中保存层序遍历过程中每一层的所有节点
Queue<Node> queue = new LinkedList<>();
// 第一层只有一个根节点,先将其加入到 queue 中
queue.offer(root);
// while 循环控制从上向下方向的遍历
while (!queue.isEmpty()) {
// levelSize 记录当前层的节点个数
int levelSize = queue.size();
// levelVals 保存当前层的所有节点值
List<Integer> levelVals = new ArrayList<>();
// for 循环控制每一层从左向右的遍历
for (int i = 0; i < levelSize; i++) {
Node curNode = queue.poll();
levelVals.add(curNode.val);
// 将当前的节点的子节点保存到 queue 中
for (Node child : curNode.children) {
queue.offer(child);
}
}
// 将当前层的所有节点值加入到 res 中
res.add(levelVals);
}
return res;
}
}
边栏推荐
- cass9.1快捷键怎么设置_cass9.1格式刷快捷键命令
- How to deal with this time of MySQL binlog??
- bihash总结
- ClickHouse查询语句详解
- MySQL 如何修改SQL语句,去掉语句中的or
- VL53L0X V2激光测距传感器 采集距离数据串口输出
- 集成学习、boosting、bagging、Adaboost、GBDT、随机森林
- MySQL中tinytext、text、mediumtext和longtext等各个类型详解[通俗易懂]
- 2022年山东省安全员C证复习题模拟考试平台操作
- SAP Analytics Cloud 和 SAP Cloud for Customer 两款 SaaS 软件的集成
猜你喜欢
随机推荐
Oracle 迁移至Mysql
MySQL 免安装版的下载与配置教程
cert-manager使用
2022.8.2-----leetcode.622
R语言ggplot2可视化数据点重合的散点图、数据点有重合、使用geom_smooth函数基于lm方法拟合数据点之间的趋势关系曲线、自定义数据点的大小、色彩、添加主标题、副标题、题注信息
cass9.1快捷键怎么设置_cass9.1格式刷快捷键命令
Mysql OCP 27题
SQL试题
慢 SQL 分析与优化
面试突击71:GET 和 POST 有什么区别?
MySQL 主从切换步骤
夏季整治百日行动进行时:700余交通安全隐患被揪出
如何优雅的消除系统重复代码
Redis和MySQL如何保持数据一致性
DOM0、DOM2、DOM3 事件
mysql的union和union all
What exactly does a firmware engineer do?
Redis的基础与django使用redis
milvus
pytorch安装错误









