首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >队列+宽搜(BFS)-429.N叉树的层序遍历-力扣(LeetCode)

队列+宽搜(BFS)-429.N叉树的层序遍历-力扣(LeetCode)

作者头像
白天的黑夜
发布2025-10-22 17:29:18
发布2025-10-22 17:29:18
3800
代码可运行
举报
运行总次数:0
代码可运行

目录

一、题目解析

1、层序遍历:一层一层,从左往右遍历

2、最后需要返回一个二维数组

二、算法原理

解法:BFS

1、先创建队列用于储存入队节点,二维数组vv用于存储最终结果

2、先判断root根节点是否为空,不为空则入队,为空则返回vv(vv未初始化,所以也为空)

3、如何保证完成层序遍历?在进行4操作之前需统计队列中的元素个数,此时的个数等于上次循环入队孩子节点的个数,也就是该层元素个数

4、由于队列先进先出的性质,将最开始入队的元素pop掉,循环操作,保存节点的值,和入(push)孩子节点(孩子节点在children数组中),将保存的值尾插(push_back)到vv中

5、当最后队列元素为空,即得到最终结果

三、代码示例

看到最后,如果对您有所帮助,还请点赞、收藏和关注一键三连,在未来还会继续带来优秀的内容,感谢观看,我们下期再见!


一、题目解析

1、层序遍历:一层一层,从左往右遍历

2、最后需要返回一个二维数组

二、算法原理

解法:BFS

1、先创建队列用于储存入队节点,二维数组vv用于存储最终结果
2、先判断root根节点是否为空,不为空则入队,为空则返回vv(vv未初始化,所以也为空)
3、如何保证完成层序遍历?在进行4操作之前需统计队列中的元素个数,此时的个数等于上次循环入队孩子节点的个数,也就是该层元素个数
4、由于队列先进先出的性质,将最开始入队的元素pop掉,循环操作,保存节点的值,和入(push)孩子节点(孩子节点在children数组中),将保存的值尾插(push_back)到vv中
5、当最后队列元素为空,即得到最终结果

对队列陌生的读者可以自行查看链接

链接:queue - C++ Reference

三、代码示例

代码语言:javascript
代码运行次数:0
运行
复制
class Solution {
public:
    vector<vector<int>> levelOrder(Node* root)
    {
        queue<Node*> qn;
        vector<vector<int>> vv;
        if(root) qn.push(root);
        else return vv;
        while(qn.size())
        {
            int num = qn.size();
            vector<int> v;
            Node* tmp;
            //出队列
            while(num--)
            {
                tmp = qn.front();
                qn.pop();
                v.push_back(tmp->val);
                //入孩子
                for(int i = 0;i<tmp->children.size();i++)
                {
                    qn.push(tmp->children[i]);
                }
            }
            vv.push_back(v);
        }
        return vv;
    }
};
看到最后,如果对您有所帮助,还请点赞、收藏和关注一键三连,在未来还会继续带来优秀的内容,感谢观看,我们下期再见!
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-10-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、题目解析
    • 1、层序遍历:一层一层,从左往右遍历
    • 2、最后需要返回一个二维数组
  • 二、算法原理
    • 解法:BFS
      • 1、先创建队列用于储存入队节点,二维数组vv用于存储最终结果
      • 2、先判断root根节点是否为空,不为空则入队,为空则返回vv(vv未初始化,所以也为空)
      • 3、如何保证完成层序遍历?在进行4操作之前需统计队列中的元素个数,此时的个数等于上次循环入队孩子节点的个数,也就是该层元素个数
      • 4、由于队列先进先出的性质,将最开始入队的元素pop掉,循环操作,保存节点的值,和入(push)孩子节点(孩子节点在children数组中),将保存的值尾插(push_back)到vv中
      • 5、当最后队列元素为空,即得到最终结果
  • 三、代码示例
    • 看到最后,如果对您有所帮助,还请点赞、收藏和关注一键三连,在未来还会继续带来优秀的内容,感谢观看,我们下期再见!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档