js 深度优先遍历并打印路径
时间: 2023-07-18 21:34:41 浏览: 113
下面是一个简单的 JavaScript 实现,用于深度优先遍历并打印路径:
```javascript
function dfs(graph, start, end, visited = [], path = []) {
visited.push(start);
path.push(start);
if (start === end) {
console.log(path);
return;
}
for (let neighbor of graph[start]) {
if (!visited.includes(neighbor)) {
dfs(graph, neighbor, end, visited, path);
}
}
path.pop();
visited.pop();
}
// 调用示例
const graph = {
A: ["B", "C"],
B: ["D"],
C: ["E"],
D: ["F"],
E: ["F"],
F: []
};
dfs(graph, "A", "F");
```
其中,`graph` 表示图的邻接表,`start` 表示起点,`end` 表示终点,`visited` 数组用于记录已经访问过的节点,`path` 数组用于记录当前遍历的路径。在函数内部,首先将当前节点加入到 `visited` 数组中,再将当前节点加入到 `path` 数组中。然后,如果当前节点是终点,则打印 `path` 数组,并直接返回。否则,遍历当前节点的所有邻居节点,如果邻居节点没有被访问过,则递归调用 `dfs` 函数。在递归返回之前,需要将当前节点从 `path` 数组和 `visited` 数组中弹出,以便继续遍历其他路径。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)