判断无向图是否是树
Posted Waston
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了判断无向图是否是树相关的知识,希望对你有一定的参考价值。
一个无向图G是一颗树的条件:
G必须是无回路的连通图或者是n-1条边的连通图
思路: 如果能通过一次dfs就能够访问图中所有顶点, 并且访问的边是n-1条则此图是一个棵树
void dfs(ALGraph graph, int v, bool visit[], int &vnum, int &arcnum) { visit[v] = true; vnum++; for(ArcNode* edge = graph.adjList[v].first; edge != NULL; edge = edge->next) { if(!visit[edge->adjvex]) { arcnum++; dfs(graph, edge->adjvex, visit, vnum, arcnum); } } } /* 一个无向图G是一颗树的条件: G必须是无回路的连通图或者是n-1条边的连通图 */ bool isTree(ALGraph graph) { bool visit[MAX_NUM]; memset(visit, 0, sizeof(visit)); int vnum = 0, arcnum = 0;//访问过顶点的个数,边的条数 dfs(graph, 1, visit, vnum, arcnum); if(vnum == graph.vexnum && arcnum == graph.vexnum - 1) return true; return false; }
参考: 王道考研数据结构复习指导
以上是关于判断无向图是否是树的主要内容,如果未能解决你的问题,请参考以下文章