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

力扣HOT100——102.二叉树层序遍历

给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。

示例 1:

输入:root = [3,9,20,null,null,15,7]
输出:[[3],[9,20],[15,7]]
/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:vector<vector<int>> levelOrder(TreeNode* root) {if(!root) return {};vector<vector<int>> ans;vector<TreeNode *> cur={root};while(cur.size()){vector<int> vals;vector<TreeNode *> nxt;for(auto x:cur){vals.push_back(x->val);if(x->left) nxt.push_back(x->left);if(x->right) nxt.push_back(x->right);}ans.push_back(vals);cur=nxt;}return ans;}
};

思路:

先判断二叉树根节点是否为空,为空则直接返回空结果;接着初始化存储结果的二维向量 `ans` 和存储当前层节点的向量 `cur`(初始含根节点),然后通过 `while` 循环不断迭代,每次循环中先定义存储当前层节点值的 `vals` 和存储下一层节点的 `nxt`,再遍历当前层节点,将其值存入 `vals`,并把左右子节点(若存在)存入 `nxt`,循环结束后将 `vals` 加入 `ans`,最后更新 `cur` 为 `nxt`,如此反复直至遍历完二叉树所有层,最终返回 `ans` 得到二叉树的层序遍历结果。

时间复杂度为 O(n),空间复杂度也为 O(n),n是二叉树的节点数

相关文章:

  • 解构与重构:“整体部分”视角下的软件开发思维范式
  • File,IO流,字符集
  • 25【干货】在Arcgis中根据字段属性重新排序并自动编号的方法(二)
  • 基于Tcp协议的应用层协议定制
  • Flask + ajax上传文件(三)--图片上传与OCR识别
  • 安服实习面试面经总结(也适合hvv蓝初)
  • 坚果派已适配的鸿蒙版flutter库【持续更新】
  • 什么是Lua模块?你会如何使用NGINX的Lua模块来定制请求处理流程?
  • 从“拼凑”到“构建”:大语言模型系统设计指南!
  • 【开源】基于51单片机的温湿度检测报警系统
  • WPF实现类似Microsoft Visual Studio2022界面效果及动态生成界面技术
  • 矫平机终极指南:特殊材料处理、工艺链协同与全球供应链管理
  • AI日报 - 2025年04月26日
  • 嵌入式学习笔记 - HAL_xxx_MspInit(xxx);函数
  • Prometheus、Zabbix和Nagios针对100个节点的部署设计架构图
  • Python基于Django的全国二手房可视化分析系统【附源码】
  • 2025第十六届蓝桥杯大赛(软件赛)网络安全赛 Writeup
  • 推荐三款GitHub上高星开源的音乐搜索平台
  • proxychains4系统代理for linux(加速国内github下载速度,pip安装)
  • Arm GICv3中断处理模型解析
  • 核电开闸!国常会核准10台新机组,拉动超2000亿投资,新项目花落谁家?
  • 清华成立人工智能医院,将构建“AI+医疗+教育+科研”闭环
  • 六朝文物草连空——丹阳句容南朝石刻考察纪
  • 别让心脏“饿肚子”,心肌缺血全解析
  • 甘肃张掖至重庆航线开通,串起西北与西南文旅“黄金走廊”
  • 剪纸纹样“流动”在水乡,谁不忆江南