题目:求无向连通图的生成树
1.问题描述
求无向连通图的一棵生成树。
2.基本要求
(1)采用邻接矩阵存储;
(2)求深度优先生成树;
(3)输出该生成树的每一条边。
3.设计思想
在一个连通无向图G=(V,E)中,如果从任一个顶点开始进行深度优先遍历,必定将边集E分成两个集合T和B,其中T是遍历过程中经历的边的集合,B是剩余的边的集合。显然,边集T和图G中所有顶点一起构成连通图G的一棵生成树。因此,修改7.4.1节中邻接矩阵类MGraph的深度优先遍历算法,输出遍历所经过的边,算法如下:
深度优先生成树算法DFSTraverse
template <class T>
void MGraph :: DFSTraverse ( int v)
{
visited [v] =1;
for ( j=0; j<vertexNum; j++)
if (arc[ v ][ j ] = = 1 && visited[ j ] = = 0) {
cout<<“(”<<v<<j<<“)”;
DFSTraverse( j );
}
}