问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

JS算法专题 - 树的层序遍历

发布网友 发布时间:2022-11-30 06:36

我来回答

1个回答

热心网友 时间:2023-11-01 08:32

先看看leetcode上的几道题目,关键字 层序遍历 ,其实就是把一棵树一层一层地遍历,取出每一个节点。当然从根节点到叶子节点,从叶子节点到根节点,每层从左到右,从右到左……都可以衍生成不同的题目。

102. 二叉树的层序遍历
107. 二叉树的层序遍历 II
429. N 叉树的层序遍历

这一类的题目,被归纳在leetcode的 广度优先搜索 标签下

这一类的题目,总结起来可以套用模板来解决,我们需要借用一下数据结构的知识:
队列 :先进先出,后进后出

在JavaScript中,我们会使用 数组Array 来模拟队列:

先初始化一个 二叉树

先看看102的题目

解题:

从以上例子,只要步骤是:

有一个细节要注意:

这里用的是 pop() 和 unshift() ,是因为队列先进先出的特点,pop()从最后面弹出一个元素,unshift()把新元素放到最前面。 push() 和 shift() 搭配也有相同效果。

107的题目稍微改变了一下,要求输出是[[15,7], [9,20], [3]],可以看出,就是把102的从上到下输出每一层节点,改成从下到上输出,首先想到的就是把102的数组反转就可以了。

但是,我们可能直接在保存结果数组的时候处理一下:
102中,我们使用 push() 把每一层的节点放入结果数组

107中,结果数组和102的反转了,所以,我们可以把 push() 改成 unshift() 即可,最后得到的结果就是,树的要节点那层在结果数组的最后,叶子节点在最前面。

429题中把二叉树改成了N叉树,树的结构发生了变化

但是可以看到,和二叉树的数据结构相比,就是把left和right合成children,那么在我们的模板中,也只需要修改一下

改成

这样就可以得到结果了。

想一下,如果再改一下:如何从右到左遍历每一层节点?层数是单数时从左到右,层数是双数时从右到左?

再扩展一下,这个算法能做什么呢?

当我们玩游戏,特别是走迷宫之类的游戏,是不是会从一个点出发,然后判断下一步能不能走,直到找出终点?BFS也是寻路方案的基础。

推荐一下leetcode上的总结:
二叉树层序遍历登场:我要打十个!
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
枸杞子如何吃养肾呢? 淘宝商家如何报名多件多折玩法?玩法说明 淘宝怎么设置满减优惠券活动?有什么技巧? 淘宝满减活动是商家支付吗?淘宝如何设置满减活动? 淘宝满减算的是原价还是打折价?如何设置满减活动? 家和万事兴里的宋香怀的是谁的孩子 你好:HP380g6加3T硬盘, p410i阵列卡识别硬盘仅为 0GB,确认加入阵列出错... ...G6服务器开机时出现黑底白字的Boot failed 提示界面,寻求高手指教... ...提示slot 0 HP Smart Arry P4101 controller ...ML150G6 的服务器,开机时报slot 4 hp smart array p410 controller是... 课程要求完成一个左右子树交换的Java作业,麻烦大神列一下 利用数据结构和算法反转一个二叉树 226.反转二叉树(二叉树,简单) 疫情过后创业机会在哪里? 昆明万科城长城中学学费20000是真的吗? 万科公园城市属于热门楼盘吗 万科云子上哪个小学 买昆明万科城可以转学到长城中学吗? 9OOm丨重是多少斤? 900毫升是多少斤 郁闷ING 峨眉山万年寺到金顶爬升多少米 描写峨眉山万年寺的诗句 峨眉山万年寺,李白曾在此作诗,内有米芾手书的“第一山碑” 万年寺和五显岗哪个好玩 有人让我去作尚派平板电脑,大家觉得尚派平板电脑怎么样? 京剧有四大帮派,梅兰芳创立了哪个帮派 尚派的京剧旦角流派 出国留学生需要提前准备留学所在国的国家货币吗? 什么样的中国留学生才能在国外大展身手 愿你爱己,亦能爱人 【急急急~~~~】调用求结点的前驱结点算法,按中根次序遍历一颗中序线索二叉树 . FH77射手52倍口径自行榴弹炮是用的哪种系统? 现代榴弹炮由几种? 郑州居住证新政策 "东莞哪家代理日本住友LCP,E6808UHF,Z高温强度耐热老化" LCP和PA6T有什么区别? 我想把名企名录里的公司信息删除,怎么办? 女主叫叶清欢的重生小说 快穿文里女主叫清欢的小说,还在跟新 重生小说女主叫楚清欢 无限极心维雅倍护防晒霜适合用脸部吗 大吉小区173弄为什么不拆迁 阳信到胡集走大吉路怎么走 奥德赛加多少号汽油 奥德赛加92还是95 奥德赛加92还是95号汽油 本田奥德赛加92还是95 怎样打印所有供应商的主数据报表 管家婆 查看供应商往来余额情况可以查看的报表是? 我需要用EXCEL做应付款,公司有月结性质供应商。请问如何做一个报表显示!