目录
1.题目
- 1.题目
- 2.思路
- 3.代码实现(Java)
给定一个 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 children;
public Node() {}
public Node(int _val) {
val = _val;
}
public Node(int _val, List _children) {
val = _val;
children = _children;
}
};
*/
class Solution {
public List levelOrder(Node root) {
// res 用于保存最终的结果
List res = new ArrayList();
if (root == null) {
return res;
}
// queue 中保存层序遍历过程中每一层的所有节点
Queue queue = new LinkedList();
// 第一层只有一个根节点,先将其加入到 queue 中
queue.offer(root);
// while 循环控制从上向下方向的遍历
while (!queue.isEmpty()) {
// levelSize 记录当前层的节点个数
int levelSize = queue.size();
// levelVals 保存当前层的所有节点值
List levelVals = new ArrayList();
// for 循环控制每一层从左向右的遍历
for (int i = 0; i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?