js有关深度优先遍历和广度优先遍历

1.Ai智能回答

 深度优先遍历广度优先遍历是图论中两种基本的遍历算法,‌它们分别以不同的方式遍历图中的所有顶点。‌

    深度优先遍历(‌DFS)‌是一种用于遍历或搜索树或图的算法。‌这个算法会尽可能深地搜索图的分支。‌在图中,‌这个算法用来标记已访问和未访问的顶点。‌当节点v被访问时,‌DFS会递归地访问所有从v出发的边所指向的未被访问的顶点。‌当节点v的所有边都已访问,‌或者没有未被访问的边时,‌DFS会回溯到发现节点v的节点,‌继续搜索其他路径。‌这种遍历方法尽可能地往深处探索,‌直到达到某个终点,‌然后再回溯并探索其他路径12。‌

    广度优先遍历(‌BFS)‌则是另一种图遍历算法,‌它从图的某一节点(‌源或起始节点)‌出发,‌探索所有相邻的节点,‌然后对这些相邻节点的未被访问的邻接节点进行探索,‌直到所有可达的节点都被访问。‌BFS按层次顺序进行搜索,‌首先访问离起始节点最近的节点,‌然后逐渐向外扩展到更远的节点。‌这种方法适合于寻找从起点到图中其他所有节点的最短路径14。‌

    这两种遍历方法各有其应用场景和优势。‌深度优先遍历适合用于寻找图中是否存在环或者特定路径的情况,‌而广度优先遍历则更适合于寻找最短路径或者需要遍历图中所有可达节点的情况。‌

2.js使用两种遍历实现

定义简单树

let queue  = [{label:'1',children:[{label:'2-1',children:[{label:'2-1-1',children:[{label:'2-1-1-1'}]},{label:'2-1-2',children:[{label:'2-1-2-1'},{label:'2-1-2-2'}]},{label:'2-1-3'}]},{label:'2-2'},{label:'2-3',children:[{label:'2-3-1'},{label:'2-3-2'}]}]}]

2.1 深度优先遍历

// 深度优先function dfs(arg) {arg.forEach((node) => {console.log(node.label);node.children && depth(node.children);});}dfs(queue)

打印

2.1 广度优先遍历

// 广度优先遍历function dfs(arg) {for (let i = 0; i < arg.length; i++) {console.log(arg[i].label);if (arg[i].children) {arg = arg.concat(arg[i].children);}}}dfs(queue)

打印

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/49539.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Elasticsearch-RestAPI --学习笔记

RestAPI ES官方提供了各种不同语言的客户端&#xff0c;用来操作ES。这些客户端的本质就是组装DSL语句&#xff0c;通过http请求发送给ES。 官方文档地址&#xff1a; Elasticsearch Clients | Elastic 以下关于RestAPI 的说明都是基于老版本客户端 初始化RestClient 1&…

【分布式】分布式锁的业务应用场景

梳理了分布式锁的两种常用的实现方式&#xff0c;接下来梳理一下日常开发中会应用分布式锁的业务场景 实现分布式锁的两种方式&#xff1a; 【分布式锁】Redission实现分布式锁 【分布式锁】Redis实现分布式锁 分布式锁在分布式系统中扮演着至关重要的角色&#xff0c;用于解决…

学习华为IPD流程黑话2.0

目录 1、内容简介 2、概念六&#xff1a;管道管理 3、概念七&#xff1a;业务计划 4、概念八&#xff1a;IPMT 的投资活动 5、概念九&#xff1a;BETA、ESS、ESP 作者简介 1、内容简介 学习任何新事物都是从概念开始的。 以我个人最近遇到的一个事为例&#xff1a; 前…

探索国内商业地产之巅:卓越项目的标准是什么?

在我心目中&#xff0c;现阶段国内最好的商业地产项目&#xff0c;如果要从多个维度综合考虑的话&#xff0c;我会提名一些像“万象城”这样的城市综合体作为典范&#xff0c;特别是那些位于一线城市或新一线城市核心地段的万象城项目。 作为一个多年的地产从业者&#xff0c;…

Python——NumPy(第一讲)

文章目录 Numpy是什么&#xff1f;numpy的安装 array创建数组arange创建数组随机数创建随机数随机整数正太分布 ndarray 对象zeros创建ones创建empty 创建full()创建创建单位矩阵linspace创建logspace创建 Numpy是什么&#xff1f; Numpy(Numerical Python) 是科学计算基础库&…

数据结构(特殊二叉树-平衡二叉树)

平衡二叉树(AVL树) 前提一定是搜索二叉树&#xff0c;对于根节点的左右子树的高度差不能超过1&#xff0c;并且所有子树都要循序这个要求 如果一个搜索二叉树呈现或接近单支状&#xff0c;它的查找效率很低&#xff0c;很接近链表&#xff0c;因此如果能让它平衡时&#xff0c…

回望林徽因,给心怀梦想的女孩子以精神的力量。|于女生,影响你的命运的一个很重要的因素是将来的伴侣。

文章目录 引言I 《回望林徽因,给心怀梦想的女孩子以精神的力量。》怎样活出生命的价值和精彩?相爱的两个人,需要注意的地方是?普通日子的浪漫,藏在哪些细节里?一个女性最有魅力的时刻是?写作的美妙之处是什么?为什么说笑起来的样子很美?自由辽阔的心境,是什么样的感觉…

python中的fire和Linux shell中的参数传递

一、fire 安装 要使用 Python Fire 库&#xff0c;首先需要安装它。以下是安装步骤&#xff1a; 使用 pip 安装 可以通过 pip 直接安装 Python Fire&#xff1a; pip install fire 特性 自动生成命令行界面&#xff1a;将任何 Python 对象&#xff08;函数、类、模块、字…

nodejs编译报错 集合

目录 一、使用命令编译typescript时报错&#xff0c;报错文件tsconfig.json 二、npm start运行后报错&#xff0c;could not find module 一、使用命令编译typescript时报错&#xff0c;报错文件tsconfig.json npx tsc 报错&#xff1a; Specified include paths were [&…

秋招突击——7/24——知识补充——JVM类加载机制

文章目录 引言类加载机制知识点复习类的生命周期1、加载2、连接——验证3、连接——准备4、连接——解析5、初始化 类加载器和类加载机制类加载器类加载机制——双亲委派模型 面试题整理1、类加载是什么2、类加载的过程是什么3、有哪些类加载器&#xff1f;4、双亲委派模型是什…

Redis一致性与分布式锁

Redis一致性 何为redis一致性 即在项目中&#xff0c;redis缓存中的数据要与数据库当中的数据保持一致。 那么这里&#xff0c;就会有小伙伴要问了&#xff0c;redis缓存中的数据不就是从数据库当中查询出来的吗&#xff1f;怎么会不一致呢&#xff1f; 笔者在这里解答一下…

Unite 上海 强势回归

​​​ 他回归了 Unite 大会是一年一度的 Unity 全球开发者盛会。今年&#xff0c;Unite 将于 7 月盛夏点亮上海外滩。此次盛会&#xff0c;我们将以“团结”为核心&#xff0c;凝聚全球 3000 多位 Unity 社区精英的力量&#xff0c;共同开启 Unity 技术的新纪元。 在这里&am…

UE学习笔记--干货满满!FString 的 Equals 和 == 源码深度探析

目录 前言FString 的 operatorESearchCaseStricmpBothAsciiLowerAsciiStricmp 结论Stricmp 代码验证整理思路 前言 最近大概写了如下代码 TArray<FString> TestArray; FString Z1 "Z1", z1 "z1"; TestArray.Emplace(Z1);if(TestArray.Contains(z…

代码随想录第十七天|动态规划(1)

目录 LeetCode 509. 斐波那契数列 LeetCode 70. 爬楼梯 LeetCode 746. 使用最小花费爬楼梯 LeetCode 62. 不同路径 LeetCode 63. 不同路径 II 总结 动态规划在算法课上学习过&#xff0c;看过了之后有一些熟悉感。&#xff08;虽然贪心算法也学过&#xff0c;但是不如动态…

样式迁移及代码

一、定义 1、使用卷积神经网络&#xff0c;自动将一个图像中的风格应用在另一图像之上&#xff0c;即风格迁移&#xff1b;两张输入图像&#xff1a;一张是内容图像&#xff0c;另一张是风格图像。 2、训练一些样本使得样本在一些cnn的特征上跟样式图片很相近&#xff0c;在一…

Java字符串与Unicode编码(码点、代码单元、基本多语言平面BMP、辅助平面、代理对)

Java字符串与Unicode编码 1. Unicode编码简介 Unicode是一个为世界上所有书写系统设计的字符编码标准。它旨在解决不同编码标准之间不兼容的问题&#xff0c;使得计算机能够处理和显示世界上几乎所有的字符。Unicode为每个字符分配了一个唯一的数字&#xff0c;称为“码点”&…

字典集合案例

1.统计字符 统计字符串中每个字符出现的次数 s l like summer very much #去掉空格 s s.replace(" ","") d dict() for i in s:if i in d:d[i] 1else:d[i] 1 for i in d:print(i,d[i]) 2.求不重复的随机数 #导入随机数 import random a int(input(&q…

自动化测试的艺术:Xcode中GUI测试的全面指南

自动化测试的艺术&#xff1a;Xcode中GUI测试的全面指南 在软件开发过程中&#xff0c;图形用户界面&#xff08;GUI&#xff09;测试是确保应用质量和用户体验的关键环节。Xcode&#xff0c;作为苹果的官方集成开发环境&#xff08;IDE&#xff09;&#xff0c;提供了一套强大…

智能疲劳驾驶检测:基于YOLO和深度学习的全流程实现

引言 疲劳驾驶是导致交通事故的重要原因之一。为了提高道路安全&#xff0c;及时检测和预警驾驶员的疲劳状态显得尤为重要。本文介绍了一种基于深度学习的疲劳驾驶检测系统。该系统利用YOLO模型&#xff08;YOLOv8/v7/v6/v5&#xff09;进行疲劳驾驶检测&#xff0c;并提供了详…

OD C卷 - 密码输入检测

密码输入检测 &#xff08;100&#xff09; 给定一个密码&#xff0c;‘<’ 表示删除前一个字符&#xff0c;输出最终得到的密码&#xff0c;并判断是否满足密码安全要求&#xff1a; 密码长度>8;至少包含一个大写字母&#xff1b;至少包含一个小写字母&#xff1b;至少…