leetcode 数据结构之 树的层序遍历

简单易懂,让我们来浅谈一下如何对树进行层序遍历吧

哈喽哈喽,我是你们的金樽清酒。树这个结构呀,在计算机领域是十分重要的。基本很多结构,都是树型结构。比如在前端领域,在浏览器通过http协议拿到html文件的时候不就是解析dom树嘛。那我们要解析一棵树,其实就是要遍历它,按照我们需要的顺序将树展开。

题目

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

示例 1:

ini 复制代码
输入: root = [3,9,20,null,null,15,7]
输出: [[3],[9,20],[15,7]]

示例 2:

lua 复制代码
输入: root = [1]
输出: [[1]]

示例 3:

ini 复制代码
输入: root = []
输出: []

分析

树的层序遍历,是要我们将一棵树一层层的按顺序存进数组。其中用的最多的思路就是用队列的思想。因为队列是先进先出嘛。我们按照顺序,从头到顶,从左到右的先存进队列,那么自然出来的也是从头到顶,从左到右。但是要一层一层的保存,那我们就要进行一些操作了,那就一层一层处理呗。先把前面的出队,然后看它的左右是否有节点,再入队,循环处理。这样就可以一层层的进行操作了。

代码

js 复制代码
function levelOrder(root: TreeNode | null): number[][] {

//二叉树的层序遍历,思想是什么呢?那就是用队列的思想。

if (!root) return []

let result = []

let stack = []

stack.push(root)

while (stack.length > 0) {

result.push([])

const len = stack.length

for (let i = 0; i < len; i++) {

const node = stack.shift()

result[result.length - 1].push(node.val)

if (node.left) {

stack.push(node.left)

}

if (node.right) {

stack.push(node.right)

}

}

}

return result

};

对不起友友们,复制过来不会格式化。有需要可以自行复制格式化。希望对你有所帮助。

相关推荐
lpfasd12310 小时前
node-sass 停止维护!老项目迁移 Dart Sass 完整教程
前端·rust·sass
生态学者10 小时前
Global Change Biology | 森林越“步调一致”,反而越怕干旱?树木生长与叶片活动的同步之谜
大数据·人工智能·算法·r语言·微信公众平台
lsswear11 小时前
Agent 框架新手入门与实战部署指南
大数据·人工智能·算法
Data analyse45612 小时前
rnweb 回放数据量太大怎么办?分片存储与断点续传的实现思路
前端·网络·算法·数据分析
xiaogai_gai13 小时前
金蝶收料通知单查询策略实战教程:从源系统拉取到中间层落地的完整路径
java·前端·数据库
环境栈笔记13 小时前
指纹浏览器 WebRTC 怎么设置?从 ICE 候选、代理出口到功能验证
前端·人工智能·后端·自动化
Navigator_Z14 小时前
LeetCode //C - 1293. Shortest Path in a Grid with Obstacles Elimination
c语言·算法·leetcode
赵大仁14 小时前
官网性能优化实战:LCP 3.2s → 2.1s、CLS 0.107 → 0,以及被我推翻的 6 个判断
前端·性能优化·cls·lcp·core web vitals
xiancai_xianyu14 小时前
Text2SQL落地生产库前,SQL要过哪三道闸
前端·数据库·sql·sql注入·text2sql·ai agent开发·企业级ai框架
小羊没烦恼!14 小时前
T-SQL查询进阶--理解SQL SERVER中的分区表
服务器·开发语言·前端·javascript·html