您的位置:首页 > 理论基础 > 数据结构算法

数据结构基础温故-5.图(中):图的遍历算法

2015-07-27 00:50 337 查看
上一篇我们了解了图的基本概念、术语以及存储结构,还对邻接表结构进行了模拟实现。本篇我们来了解一下图的遍历,和树的遍历类似,从图的某一顶点出发访问图中其余顶点,并且使每一个顶点仅被访问一次,这一过程就叫做图的遍历(Traversing Graph)。如果只访问图的顶点而不关注边的信息,那么图的遍历十分简单,使用一个foreach语句遍历存放顶点信息的数组即可。但是,如果为了实现特定算法,就必须要根据边的信息按照一定的顺序进行遍历。图的遍历算法是求解图的连通性问题、拓扑排序和求解关键路径等算法的基础。

一、图的遍历

static void MyAdjacencyListTraverseTest()
{
Console.WriteLine("------------非连通图的遍历------------");
MyAdjacencyList<string> numAdjList = new MyAdjacencyList<string>();
// 添加顶点
numAdjList.AddVertex("V1");
numAdjList.AddVertex("V2");
numAdjList.AddVertex("V3");
numAdjList.AddVertex("V4");
numAdjList.AddVertex("V5");
numAdjList.AddVertex("V6");
numAdjList.AddVertex("V7");
numAdjList.AddVertex("V8");
// 添加边
numAdjList.AddEdge("V1", "V2");
numAdjList.AddEdge("V1", "V4");
numAdjList.AddEdge("V2", "V3");
numAdjList.AddEdge("V2", "V5");
numAdjList.AddEdge("V4", "V5");
numAdjList.AddEdge("V6", "V7");
numAdjList.AddEdge("V6", "V8");
Console.Write("深度优先遍历:");
// DFS遍历
numAdjList.DFSTraverse4NUG();
Console.WriteLine();
Console.Write("广度优先遍历:");
// BFS遍历
numAdjList.BFSTraverse4NUG();
}


View Code
  运行结果如下图所示:



附件下载

  本篇实现的图的遍历算法:code.datastructure.graph

参考资料

(1)程杰,《大话数据结构》

(2)陈广,《数据结构(C#语言描述)》

(3)段恩泽,《数据结构(C#语言版)》

作者:周旭龙

出处:http://edisonchou.cnblogs.com

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: