Go语言深度优先搜索(DFS)

Go 语言代码段实现了深度优先搜索(DFS)算法,该算法用于遍历图数据结构。以下是代码的主要要点和执行流程的总结:

深度优先搜索函数 (DFS):

  • 接收图的邻接表 (map[int][]int)、访问记录 (map[int]bool) 和当前节点作为参数。
  • 将当前节点标记为已访问,并输出访问信息。
  • 递归遍历当前节点的邻居节点,对未访问的邻居节点调用 dfs 函数。

主程序 (main):

  • 定义示例有向图的邻接表。
  • 初始化节点访问记录的 map
  • 从节点0开始调用 dfs 函数,实现深度优先搜索。

假设你有一个图的邻接表,以 map[int][]int 的形式表示。请注意,这只是一个基本示例,你可能需要根据具体情况进行调整。

Go 复制代码
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。

运行该程序,你将看到深度优先搜索的结果,即访问的节点顺序。这个示例是有向图的深度优先搜索,你可以根据需要调整为无向图的情况。

相关推荐
Fuxiao___25 分钟前
C 语言核心知识点讲义(循环 + 函数篇)
算法·c#
漫随流水1 小时前
c++编程:反转字符串(leetcode344)
数据结构·c++·算法
人间打气筒(Ada)2 小时前
go实战案例:如何通过 Service Meh 实现熔断和限流
java·开发语言·golang·web·istio·service mesh·熔断限流
穿条秋裤到处跑2 小时前
每日一道leetcode(2026.03.31):字典序最小的生成字符串
算法·leetcode
weixin_449190413 小时前
defer和defer func执行区别
golang
呆萌很4 小时前
【GO】指针练习题
golang
CoovallyAIHub5 小时前
VisionClaw:智能眼镜 + Gemini + Agent,看一眼就能帮你搜、帮你发、帮你做
算法·架构·github
CoovallyAIHub5 小时前
低空安全刚需!西工大UAV-DETR反无人机小目标检测,参数减少40%,mAP50:95提升6.6个百分点
算法·架构·github
CoovallyAIHub5 小时前
IEEE Sensors | 湖南大学提出KGP-YOLO:先定位风电叶片再检测缺陷,三数据集mAP均超87%
算法
Yupureki5 小时前
《算法竞赛从入门到国奖》算法基础:动态规划-路径dp
数据结构·c++·算法·动态规划