【每天学习一点算法 2025/12/19】二叉树的层序遍历

每天学习一点算法 2025/12/19

题目:二叉树的层序遍历

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

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

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

emmmmmmmm,层序遍历就是前几个二叉树相关问题里面的迭代法,这题目顺序对吗?

OK,层序遍历主要就是利用队列存储节点,然后循环队列的过程中将子节点入队列从而实现逐层拓展遍历二叉树。

typescript 复制代码
function levelOrder(root: TreeNode | null): number[][] {
  if (!root) return []
  const result: number[][] = [] // 用于存储遍历结果
  const queue: Array<TreeNode | null> = [] // 队列用于遍历树节点
  queue.push(root) // 初始根节点入队列
  
  // 循环遍历
  while (queue.length > 0) {
    const len = queue.length // 暂存当前层的节点数
    const level = [] // 用于存储当前层节点值
    // 循环当前层节点,存储节点值,并拓展下一层节点
    for (let i = 0; i < len; i++) {
      const node = queue.shift()!
      level.push(node.val)
      node.left && queue.push(node.left)
      node.right && queue.push(node.right)
    }
    result.push(level)
  }
  return result
}

题目来源:力扣(LeetCode)

相关推荐
hcnaisd220 小时前
深入理解C++内存模型
开发语言·c++·算法
李老师讲编程20 小时前
C++信息学奥赛练习题-杨辉三角
数据结构·c++·算法·青少年编程·信息学奥赛
zxsz_com_cn20 小时前
设备预测性维护算法核心功能有哪些?六大模块拆解智能运维的“技术骨架”
运维·算法
期末考复习中,蓝桥杯都没时间学了20 小时前
力扣刷题13
数据结构·算法·leetcode
自可乐20 小时前
n8n全面学习教程:从入门到精通的自动化工作流引擎实践指南
运维·人工智能·学习·自动化
2201_7569890920 小时前
C++中的事件驱动编程
开发语言·c++·算法
多米Domi01121 小时前
0x3f 第48天 面向实习的八股背诵第五天 + 堆一题 背了JUC的题,java.util.Concurrency
开发语言·数据结构·python·算法·leetcode·面试
2301_8223776521 小时前
模板元编程调试方法
开发语言·c++·算法
深蓝海拓21 小时前
PySide6从0开始学习的笔记(二十六) 重写Qt窗口对象的事件(QEvent)处理方法
笔记·python·qt·学习·pyqt
故以往之不谏21 小时前
函数--值传递
开发语言·数据结构·c++·算法·学习方法