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

二叉树的广度优先搜索(层次遍历)

目录

定义

层序遍历的数据结构

实现过程简述

具体代码


定义

层序遍历就是从左到右一层一层地遍历二叉树。

层序遍历的数据结构

层序遍历需要借用一个辅助数据结构实现,由于队列具有先进先出的特性,符合一层一层遍历的逻辑,而栈先进后出更适合模拟深度优先遍历(递归)。

实现过程简述

首先如果根节点不为空,就将根节点放入队列里。然后设置循环,循环结束条件为队列为空(这样就可以保证遍历完二叉树中的每一个节点)。循环体里记录每层的节点数量,并设置一个节点指针保存队列首元素(以便后续使用),将首元素的值放入一个一维数组中,然后弹出首元素。使用节点指针将该节点的左子节点和右子节点放入队列。一层结束将一维数组push进结果数组(二维数组)里。遍历完毕返回结果数组。

具体代码

class Solution {
public:vector<vector<int>> levelOrder(TreeNode* root) {queue<TreeNode*> que;vector<vector<int>> result;if(root != nullptr) que.push(root);while(!que.empty()) {int size = que.size();vector<int> vec;while(size--) {TreeNode* node = que.front();que.pop();vec.push_back(node->val);if(node->left) que.push(node->left);if(node->right) que.push(node->right);}result.push_back(vec);} return result;}
};

http://www.lryc.cn/news/384133.html

相关文章:

  • AU音频重新混合音频,在 Adobe Audition 中无缝延长背景音乐,无缝缩短BGM
  • 11-Django项目--Ajax请求二
  • 代码评审——Java占位符%n的处理
  • 超低排放标准
  • Day15 —— 大语言模型简介
  • 使用了CDN,局部访问慢,如何排查
  • 谈谈SQL优化
  • 力扣随机一题 6/26 哈希表 数组 思维
  • 自动化办公04 使用pyecharts制图
  • 【Elasticsearch】在es中实现mysql中的FIND_IN_SET查询条件
  • 内网一键部署k8s-kubeshpere,1.22.12版本
  • Python数据分析第一课:Anaconda的安装使用
  • 数据结构——
  • 微信小程序建议录音机
  • 双指针:移动零
  • 图像亮度和对比度的调整
  • Linux加固-权限管理_chattr之i和a参数
  • windows10/win11截图快捷键 和 剪贴板历史记录 快捷键
  • 上海计算机考研避雷,25考研慎报
  • 第九次作业
  • A股探底回升,跑出惊天大阳,你们知道为什么吗?
  • jenkins nginx自动化部署 php项目
  • 海外代理IP哪个可靠?如何测试代理的稳定性?
  • MySQL之可扩展性(四)
  • JupyterLab使用指南(三):JupyterLab的Cell详细介绍
  • solidity智能合约如何实现跨合约调用函数
  • 关于Vue2的生命周期会问到哪些面试题?
  • 尚品汇-(七)
  • 【Python datetime模块精讲】:时间旅行者的日志,精准操控日期与时间
  • keepalived 服务高可用(简约版)