判断一个无向图G是否为一棵树

bool isTree(Graph &G){
	for(int i=1;i<=G.vexnum;i++){
		visited[i]=FALSE;
	}
	int Vnum=0,Enum=0;
	DFS(G,1,Vnum,Enum,visited);
	if(Vnum==G.vexnum&&Enum==2*(G.vexnum-1)){	//无向图,边数应为结点数-1的2倍 
		return true;
	}
	else return false;
} 
void DFS(Graph &G,int v,int& Vnum,int& Enum,int visted[]){
	visited[v]=TRUE;
	Vnum++;
	int w=FirstNeighbor(G,v);
	while(w!=1){
		Enum++;
		if(!visited[w]){
			DFS(G,w,Vnum,Enum,visited);
		}
		w=NextNeighbor(G,v,w);
	}
}

 

你可能感兴趣的:(判断一个无向图G是否为一棵树)