您当前的位置: 首页 >  leetcode

星许辰

暂无认证

  • 2浏览

    0关注

    466博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

LeetCode_多叉树_中等_429.N 叉树的层序遍历

星许辰 发布时间:2022-08-02 09:13:37 ,浏览量:2

目录
  • 1.题目
  • 2.思路
  • 3.代码实现(Java)

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 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             
关注
打赏
1665627467
查看更多评论
0.0405s