【每天学习一点算法 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)

相关推荐
I_belong_to_jesus10 小时前
C++关于分支预测的优化1
开发语言·c++·算法
Rabitebla12 小时前
【Linux】进程控制(十二) 自定义 Shell(二):内建命令与进程工作目录管理
linux·c++·笔记·学习·bash
Gary移动存储固件12 小时前
eMMC5.1协议中文学习讲解(6.6.17~6.6.22.4.6)
学习·ufs·emmc·nand·存储固件
一个天蝎座 白勺 程序猿13 小时前
别让收藏夹替你学习:我搭AI知识体系的完整方法,脚本直接拿去用
人工智能·学习·ai·ai学习
楚山之石13 小时前
【Nat Biomed Eng】Connectome 2.0 超高梯度扫描仪:500 mT/m 与 600 T/m/s 把活体人脑微观结构分辨推进到亚微米级
图像处理·学习·数据分析·mri
坤坤子吖16 小时前
Linux网络编程:TCP 粘包与半包问题,如何正确处理 TCP 流式数据?
linux·服务器·网络·笔记·网络协议·学习
Code_Solitude17 小时前
C语言动态内存 + 柔性数组 + 数组名退化
c语言·算法·柔性数组
上海潭龙东海科技有限公司17 小时前
客运站管控之动态孪生技术方案(新增一屏管控模块
数据仓库·人工智能·算法·重构·动态规划
YLCHUP20 小时前
【思维&图论建模】题解:债权(debt)_图论_建模_思路转化_思维题目_C++算法竞赛
c++·笔记·算法·数学建模·贪心算法·深度优先·图论