深度优先搜索(DFS)是一种图搜索算法,它尽可能深入一个分支,然后回溯并探索其他分支。以下是使用C#实现DFS的代码示例:
using System;
using System.Collections.Generic;class Graph
{private int V; // 顶点的数量private List<int>[] adj; // 邻接表public Graph(int v){V = v;adj = new List<int>[v];for (int i = 0; i < v; ++i)adj[i] = new List<int>();}// 添加边public void AddEdge(int v, int w){adj[v].Add(w); // 添加 w 到 v 的列表中}// DFS 递归函数private void DFSUtil(int v, bool[] visited){// 标记当前节点为已访问并打印visited[v] = true;Console.Write(v + " ");// 递归地访问所有邻接节点List<int> list = adj[v];foreach (var n in list){if (!visited[n])DFSUtil(n, visited);}}// DFS 主函数public void DFS(int v){// 初始化所有顶点为未访问状态bool[] visited = new bool[V];// 调用递归的辅助函数DFSUtil(v, visited);}// 主函数,用于测试public static void Main(String[] args){Graph g = new Graph(4);g.AddEdge(0, 1);g.AddEdge(0, 2);g.AddEdge(1, 2);g.AddEdge(2, 0);g.AddEdge(2, 3);g.AddEdge(3, 3);Console.WriteLine("从顶点 2 开始的深度优先搜索:");g.DFS(2);}
}
代码说明:
-
Graph 类:
V
:存储图中顶点的数量。adj
:邻接表,使用列表数组表示。
-
AddEdge 方法: 用于在图中添加边。
-
DFSUtil 方法: 递归函数,用于访问节点及其相邻节点。
-
DFS 方法: 初始化访问状态数组并调用递归函数开始搜索。
-
Main 方法: 创建图并添加边,最后调用DFS方法开始搜索。
运行结果:
这段代码将输出从顶点2开始的深度优先搜索结果。例如:
从顶点 2 开始的深度优先搜索: 2 0 1 3
这表示从顶点2开始,访问顺序为2 -> 0 -> 1 -> 3。