当前位置: 首页 > news >正文

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

目录

一、题目解析

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

三、代码示例

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;}
};

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

http://www.dtcms.com/a/393668.html

相关文章:

  • 【Linux命令从入门到精通系列指南】rm 命令详解:安全删除文件与目录的终极实战手册
  • Springboot使用dockerfile-maven-plugin部署镜像
  • 安卓蓝牙键盘和鼠标6.10.4去更新汉化版 手机变为蓝牙键盘和鼠标
  • 工作笔记-----lwip的内存管理策略解析
  • 量子计算学习笔记(1)
  • Python爬虫基础与应用
  • Rabbitmq 集群初始化,配置导入
  • 云计算与虚拟化技术详解
  • elasticsearch 的配制
  • React学习教程,从入门到精通,React Hook 详解 —— 语法知识点、使用方法与案例代码(26)
  • ELK日志分析性能瓶颈问题排查与解决实践指南
  • 【Unity】【Photon】Fusion2中的匹配API 学习笔记
  • (3-1) Html
  • 《人机协同的边界与价值:开放世界游戏系统重构中的AI工具实战指南》
  • 数据库造神计划第十九天---事务(2)
  • Python到剪映草稿生成及导出工具,构建全自动化视频剪辑/混剪流水线
  • WordPress给指定分类文章添加一个自动化高亮(一键复制)功能
  • 5分钟使用Dify实现《射雕英雄传》问答智能体Agent
  • 3. 认识 const
  • 云原生 vs 传统部署
  • 2.1、机器学习-模型评估指标与参数调优
  • 设计模式(C++)详解—享元模式(2)
  • Linux实用操作以及基础命令
  • 深入理解 Vue 插槽:从基础到高级用法
  • 自动排班系统:劳动力管理新选择
  • Word和WPS文字中设置了倍数行距却没有变化?原因和调整方法
  • 【Linux篇】Linux 初探:历史溯源与常用指令速览
  • 数字孪生及其在能源和新材料等领域内的应用
  • DeepSeek后训练:监督微调策略,开启模型优化新时代
  • 基于规则的专家系统对自然语言处理深层语义分析的影响与启示研究