树的深度与广度优先遍历

article/2025/10/3 11:35:57

树是前端工程师最经常打交道的一个数据结构,比如说html标签组成的dom树、树形控件等。

在js中没有树这个数据结构,但是可以用Object和Array来构建树:

//val是当前的节点值,children是子节点
const tree = {val: 'A',children: [{val: 'B',children: [{val: 'D',children: []},{val: 'E',children: []}]},{val: 'C',children: [{val: 'F',children: []},{val: 'G',children: []}]}]}

接下来说说深度/广度优先遍历

1.深度优先遍历:尽可能深的搜索树的分支,这个搜索与遍历同个意思

看着图片上的数字,表示访问的顺序

盗用一下别人的图,我感觉这个图看起来更清晰

 

 

实现深度优先遍历的算法比较简单,只有两行,通过递归多次调用

        1.访问根节点

        2.对根节点的children挨个进行深度优先遍历

const dfs = (root) => {//bfs是depth first search的缩写//传入一个根节点,访问根节点console.log(root.val);//利用递归访问子节点//root.children.forEach(child => dsf(child))可以简写为root.children.forEach(dfs)
}

 

2.广度优先遍历:先访问离根节点最近的节点,就是一层一层的向下查找

广度优先遍历的算法比深度优先遍历复杂一点 

        1.新建一个队列,把根节点入队

        2.把队头出队并访问

        3.把队头的children挨个入队

        4.重复第二、三步,直到队列为空

//Breath First Searchconst bfs = (root) => {//根节点入队let q = [root];//如果队列里还有节点,就一直循环while(q.length) {//取出队头并访问let t = q.shift();console.log(t.val);//将队头的子节点入队t.children.forEach(child => q.push(child));}
}

 深度优先遍历与广度优先遍历在日常使用中比较频繁,在面试中也比较常问


http://chatgpt.dhexx.cn/article/ZdxnFFh1.shtml

相关文章

树的高度和深度的区别

树的高度和深度的区别 标签: 数据结构二叉树 2014-04-16 10:47 3362人阅读 评论(0) 收藏 举报 分类: 数据结构 版权声明:本文为博主原创文章,未经博主允许不得转载。 目录(?)[] 对于树的基本概念上理解,对于才接触…

树的深度和高度解释

有个缺点,看到什么东西不管是不是重点只要说不通总是爱钻牛角尖。 对于 树的高度和深度(以及结点的高度和深度) 看了几本不同的书,都有各自的说法,多方查证吧,花了很多时间,最后归纳一个能说服我…

大白话概念---树的高度和深度

树的高度和深度 (本博客中使用图片为转载,侵删) 1.深度 概念: 树的深度:距离根结点最远的结点所处的层数即为树的深度。 结点的深度我的课本上称为“层数”:即从根到该结点所经路径上的分支条数 空树深…

树的最大深度和最小深度(java)

目录 树的深度和高度二叉树的最大高度思路分析递归迭代 N叉树的最大深度LeetCode.559.N叉树的最大深度思路分析递归迭代 LeetCode.二叉树的最小深度思路分析递归迭代 树的深度和高度 什么是树的深度?什么是树的高度,一张图让你弄明白!我们暂…

【数据结构】树

树 前言树的定义和基本术语二叉树二叉树的性质二叉树的存储遍历二叉树线索二叉树 树和森林树的存储结构 赫夫曼树及其应用总结 前言 最害怕的数据结构之一——树,另一个是图。主要是当时递归和链表没学好,遍历或插入的时候总是思路不清,一堆的…

树的高度和深度

1、树的深度 树的深度可以这样理解,计算一个节点的深度,从根节点算起(记住从1开始计数,而不是0,程序员的通病在这不好使),到该节点所经过的节点数(包括此节点)为树的深度…

无线协议

一个AP的网络覆盖半径只有15米,需要布置多个AP,并且保证处在同一个网络中,受同一台或几台AC同一管理WDS,无线分布系统,俗称“无线桥接”指多个无线网络相互联结的方式构成一个整体的无线网络AP和AP之间通过无线信号互联…

Wi-Fi 安全协议 - RSN

RSN(Robust Security Network,强健安全网络) TKIP 和 CCMP只能解决数据完整和机密性问题;为解决认证问题,IEEE 802.11借鉴了802.1X,引入RSNA(Robust Secure Network Association)&a…

Wi-Fi 安全协议 - WPA

WPA (Wi-Fi Protected Access) 网络安全存取技术 WPA具有两种标准:WPA和WPA2,WPA2是WPA的增强型版本,增加了支持AES的加密方式。 WPA:由于WEP存在安全缺陷,在IEEE 802.11i提出前,Wi-Fi联盟(WFA…

wifi协议-802

WIFI协议 http://standards.ieee.org/about/get/802/802.11.html https://en.wikipedia.org/wiki/IEEE_802 Name Description NoteIEEE 802.1Higher Layer LAN ProtocolsactiveIEEE 802.2LLCdisbandedIEEE 802.3EthernetactiveIEEE 802.4Token busdisbandedIEEE 802.5Defines t…

WIFI无线协议802.11a/b/g/n/ac的演变以及区别

毫无疑问,WiFi的出现普及带给我们巨大的上网便利,所以了解一下WiFi对应的802.11协议的演变和现在不同版本之前的区别也是非常有必要的。 1,常识普及 Wi-Fi是一种允许电子设备连接到一个无线局域网(WLAN)的技术&#…

WiFi各协议理论速度

一、总览 二、11b到11g提升点 802.11g工作在2.4G频段下,能够支持OFDM和CCK两种调制方式,提供16-QAM、64-QAM、BPSK和QPSK四种编码方式,我们通常说的54Mbps速率就是在2.4G频段下,通过OFDM调制,采用64-QAM编码的情况下实…

Wi-Fi 安全协议

无线网络的安全要求 机密性:确保数据不会泄露,防止数据被未经授权的第三者拦截。 帧主体加密机制(frame body encryption):主要用来提供机密性。完整性:确保数据在传输过程中不被修改了。 完整性检验机制&…

图解 802.11wifi协议

微信公号:卢同学 关注可了解更多。若有问题或建议,请与本人联系; 目录 凡事若能综观形势,通常有助于细节的进一步探究 从OSI七层模型来看,802规范的重心放在OSI模型最下面的两层,即数据链路层和物理层。 数据链路层又…

无线协议架构

目录 1 无线协议架构 1.1 用户面 1.2 控制面 2 多无线双链接 3 无线接入网络共享 1 无线协议架构 1.1 用户面 用户面的协议架构如下图所示,SDAP, PDCP, RLC和MAC各层(在gNB的网络端终止)所具…

无线局域网安全协议(WEP、WPA、WAPI)

文章目录 一、WEP(有线等效保密)二、WPA(Wi-Fi网络安全接入)三、WAPI(无线局域网鉴别和保密基础结构) WLAN(Wireless Local Area Network)指应用无线通信技术将计算机设备互联起来&a…

WiFi协议框架

PHY(Port Physical Layer),中文可称之为端口物理层,是一个对OSI模型物理层的共同简称。 PHY连接一个数据链路层的设备(MAC)到一个物理媒介,如光纤或铜缆线。典型的PHY包括PCS(Physic…

Wi-Fi 协议结构

OSI和TCP/IP结构 网络层次说明应用层应用程序间的通信表示层为不同客户端提供数据和信息的语法转换会话层为通信双方制定通信方式,创建和注销会话传输层用于控制数据流量,调试和错误处理网络层为数据传送的目的地寻址,单位packet数据链路层建…

WLAN标准协议

大家在设置路由器的时候可能看到路由器通过802b/g/n协议来传输数据,但是这个协议是标准协议吗?为什么要通过这个协议来传输网络数据发包传输包。 除了802.11标准协议外,在WLAN领域还有一个更常见更常用的名词——Wi-Fi。WiFi是无线保真&#…

WIFI协议详解

本博客整理自网络,仅供学习参考,如有侵权,联系删除。邮箱:rom100163.com。 802.11帧的三种类型: 管理帧:负责监督,主要用来加入或退出无线网络,以及处理基站之间连接的转移事宜。 …