dfs 例题 js代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

深度优先搜索(DFS)是一种用于遍历或搜索树或图的算法。

这个算法会尽可能深地搜索树的分支。

当节点v的所在边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。

以下是一个使用JavaScript实现的DFS算法示例,该示例以一个无向图作为输入,并尝试找到从源点到所有其他节点的路径:
function dfs(graph, start, visited = new Array(graph.length).fill(false)) {
visited[start] = true;
console.log(start);
for (let i = 0; i < graph.length; i++) {
if (graph[start][i] && !visited[i]) {
dfs(graph, i, visited);
}
}
}
let graph = [[0, 1, 0, 0, 1],
[1, 0, 1, 1, 1],
[0, 1, 0, 1, 0],
[0, 1, 1, 0, 1],
[1, 1, 0, 1, 0]];
dfs(graph, 0); // 开始DFS,从节点0开始
在这个例子中,我们首先定义了一个函数dfs,它接受一个图、一个开始节点和一个记录节点访问状态的数组作为参数。

在函数内部,我们首先标记开始节点为已访问,然后打印出开始节点的编号。

之后,我们遍历图中的所有节点,如果发现有未访问过的节点且与开始节点直接相连,就递归调用dfs函数。

最后,我们定义了一个图,并调用dfs函数来从节点0开始进行深度优先搜索。

相关文档
最新文档