C#实现深度优先搜索(Depth-First Search,DFS)算法
创始人
2024-12-16 00:06:05

 深度优先搜索(DFS)是一种图搜索算法,它尽可能深入一个分支,然后回溯并探索其他分支。以下是使用C#实现DFS的代码示例:

using System; using System.Collections.Generic;  class Graph {     private int V; // 顶点的数量     private List[] adj; // 邻接表      public Graph(int v)     {         V = v;         adj = new List[v];         for (int i = 0; i < v; ++i)             adj[i] = new List();     }      // 添加边     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 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);     } } 

代码说明:

  1. Graph 类:

    • V:存储图中顶点的数量。
    • adj:邻接表,使用列表数组表示。
  2. AddEdge 方法: 用于在图中添加边。

  3. DFSUtil 方法: 递归函数,用于访问节点及其相邻节点。

  4. DFS 方法: 初始化访问状态数组并调用递归函数开始搜索。

  5. Main 方法: 创建图并添加边,最后调用DFS方法开始搜索。

运行结果:

这段代码将输出从顶点2开始的深度优先搜索结果。例如:

从顶点 2 开始的深度优先搜索: 2 0 1 3

这表示从顶点2开始,访问顺序为2 -> 0 -> 1 -> 3。

相关内容

热门资讯

上海移动宣布5G-A超级上行网... 来源:滚动播报 (来源:上观新闻) 采访对象提供 5月17日,“智能加码 科创申城” 中国移动上海...
英伟达CEO黄仁勋痛斥将GPU... IT之家 5 月 17 日消息,英伟达首席执行官黄仁勋受邀担任斯坦福大学《前沿系统》CS 153 课...
2026年高性价比机型封神榜:... 2026 年手机市场机型繁杂,多数用户都面临相同的选购困境:千元预算想选高性价比手机,怕续航拉垮、用...
江苏辛巴新材料取得零碳风光互补... 国家知识产权局信息显示,江苏辛巴新材料科技股份有限公司取得一项名为“一种零碳风光互补装置”的专利,授...
全钢实验台厂家梳理 医疗/科研... 导语:实验室设备选型需兼顾功能适配性与长期稳定性。基于2026年实验室建设行业白皮书及公开市场数据,...