Go 语言代码段实现了深度优先搜索(DFS)算法,该算法用于遍历图数据结构。以下是代码的主要要点和执行流程的总结:
深度优先搜索函数 (DFS
):
- 接收图的邻接表 (
map[int][]int
)、访问记录 (map[int]bool
) 和当前节点作为参数。 - 将当前节点标记为已访问,并输出访问信息。
- 递归遍历当前节点的邻居节点,对未访问的邻居节点调用
dfs
函数。
主程序 (main
):
- 定义示例有向图的邻接表。
- 初始化节点访问记录的
map
。 - 从节点0开始调用
dfs
函数,实现深度优先搜索。
假设你有一个图的邻接表,以 map[int][]int
的形式表示。请注意,这只是一个基本示例,你可能需要根据具体情况进行调整。
package main
import "fmt"
// 深度优先搜索函数
func dfs(graph map[int][]int, visited map[int]bool, node int) {
// 标记当前节点为已访问
visited[node] = true
fmt.Printf("Visited node: %d\n", node)
// 遍历当前节点的邻居节点
for _, neighbor := range graph[node] {
// 如果邻居节点未被访问,递归访问邻居节点
if !visited[neighbor] {
dfs(graph, visited, neighbor)
}
}
}
func main() {
// 示例邻接表,表示有向图
graph := map[int][]int{
0: {1, 2},
1: {3, 4},
2: {5},
3: {},
4: {5},
5: {},
}
// 初始化访问记录的 map
visited := make(map[int]bool)
// 从节点0开始进行深度优先搜索
startNode := 0
dfs(graph, visited, startNode)
}
在这个例子中,我们通过邻接表表示了一个有向图,并从节点0开始进行深度优先搜索。你可以根据实际需求修改图的表示方式和起始节点。
运行结果:
- 深度优先搜索从节点0开始,依次访问节点0、1、3、4、2、5。
运行该程序,你将看到深度优先搜索的结果,即访问的节点顺序。这个示例是有向图的深度优先搜索,你可以根据需要调整为无向图的情况。