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

【LeetCode】102 - 二叉树的层序遍历

题目描述

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

解题思路

使用 BFS(广度优先搜索)的思想,维护当前层的所有节点,逐层处理:

  1. 将根节点加入当前层节点列表
  2. 遍历当前层所有节点,收集它们的值
  3. 收集当前层所有节点的子节点作为下一层
  4. 重复步骤2-3直到没有下一层

核心代码

public List<List<Integer>> levelOrder(TreeNode root) {List<List<Integer>> result = new ArrayList<>();if (root == null) {return result;}List<TreeNode> currentRowNodeList = new ArrayList<>();currentRowNodeList.add(root);while (true) {// 收集当前层的值List<Integer> currentRowValList = new ArrayList<>();for (TreeNode node : currentRowNodeList) {currentRowValList.add(node.val);}result.add(currentRowValList);// 收集下一层节点List<TreeNode> nextNodeList = new ArrayList<>();for (TreeNode treeNode : currentRowNodeList) {if (treeNode.left != null) {nextNodeList.add(treeNode.left);}if (treeNode.right != null) {nextNodeList.add(treeNode.right);}}if (nextNodeList.isEmpty()) {break;}currentRowNodeList = nextNodeList;}return result;
}

复杂度分析

  • 时间复杂度: O(n),n 为二叉树节点数,每个节点访问一次
  • 空间复杂度: O(n),最坏情况下需要存储一层的所有节点

示例验证

输入:[3,9,20,null,null,15,7]
输出:[[3],[9,20],[15,7]]

算法按层级正确遍历,符合预期结果。

http://www.xdnf.cn/news/1274761.html

相关文章:

  • MySQL 处理重复数据详细说明
  • DBAPI 实现不同角色控制查看表的不同列
  • SQL约束:数据完整性的守护者
  • 【面试场景题】异地多活改造方案
  • 实现两个开发板的串口通讯(基于STC8实现)
  • Oracle lgwr触发条件
  • c语言常见错误
  • 深入解析微服务分布式事务的原理与优化实践
  • 【代码随想录day 16】 力扣 513.找树左下角的值
  • Linux 路由子系统深度分析:框架、实现与代码路径
  • MariaDB 数据库管理
  • 活动策划(展会、年会),在线工具能快速出邀请函不?
  • Python 实例属性和类属性
  • 为wordpress顶部header.php文件中调用不同的标题和摘要
  • H3C(基于Comware操作系统)与eNSP平台(模拟华为VRP操作系统)的命令差异
  • Shell脚本-了解i++和++i
  • 堆(Java实现)
  • Spark学习(Pyspark)
  • 整数规划-分支定界
  • 【软件测试】BUG篇 — 详解
  • ATF(TF-A)安全通告 TFV-13(CVE-2024-7881)
  • 33.搜索旋转排序数组
  • ECharts 的理解和简单应用笔记
  • Gin vs Beego vs Echo:三大主流 Go Web 框架深度对比
  • 使用Blender可视化多传感器坐标系转换
  • sqli-labs-master/Less-51~Less-61
  • 文件 IO
  • MySQL 子查询
  • 大模型时代的机器人研究趋势:从多模态融合到高效迁移
  • Flutter 与 Android NDK 集成实战:实现高性能原生功能