【数据结构】-图-判断一个无向图是否是一棵树
思路:判断一个无向图是否是一棵树,只需要判断该图是否是一个包含n个顶点的连通子图且边数为n-1,只要这两个条件都满足,那么就是一棵树。
因此我们可以采用深度遍历,若图连通,那么只要一次深度遍历就可以遍历出所有的顶点,于是只需要调用一次dfs,并设置两个计数器记录边和顶点的数目即可。
编程注意事项:
1.邻接表在存储无向图的时, 每一条边都存储了两次,所以计数器中得到的是两边的边数
2.函数的形式参数要是引用
void DFS_my(ALGraph &G, int v, int &count_vec, int &count_arc, vector<int> &visited) {visited[v] = true;count_vec++;for (ArcNode* p = G.vertices[v].first; p; p = p->next) {count_arc++;if (!visited[p->adjvex]) DFS_my(G, p->adjvex, count_vec, count_arc, visited);}
}bool isTree(ALGraph G) {vector<int> visited(G.vecnum, false);int count_vec = 0;int count_arc = 0;DFS_my(G, 0, count_vec, count_arc,visited);//因为无向图在深度遍历的时候,每条边都计算了两次if (count_vec == G.vecnum&&count_arc == 2 * (G.vecnum - 1)) return true;else return false;
}inr main
【数据结构】-图-判断一个无向图是否是一棵树相关推荐
- HDU1878(判断一个无向图是否存在欧拉回路)
1.欧拉回路:定义:经过图(有向图或无向图)中每条边一次且仅一次并且行遍图中每个顶点的回路( 闭合的欧拉路径,即一个环,保证每条边都通过且仅通过一次). 2.问题1:判断一个无向图是否有欧拉回路的充要 ...
- QQ图判断一个分布是否为正态分布
一.正态QQ图的原理 QQ图通过把测试样本数据的分位数与已知分布相比较,从而来检验数据的分布情况.[1] 分位数:亦称分位点,是指将一个随机变量的概率分布范围分为几个等份的数值点.常用的有一个分位数叫 ...
- 【数据结构】判断一个单链表中各结点的值是否有序
count记录的是单链表的总长 count1记录的是升序的结点的个数 count2记录的是降序的结点的个数 如果count1或者count2等于count,那么就说明该序列是升序或者降序的. 稍加改进 ...
- 数据结构——图-有向图和无向图的邻接表基础
#include <stdio.h> #include <stdlib.h> #define VertexType char //顶点的数据类型(char) #define V ...
- 利用并查集判断一个无向图是否成树
hdu 1272 利用并查集方法,找到各点的根节点. 几点注意: 一.树:1.无环 2.根节点入度为0,其余入度为1 判断依据: 1.若两个点的根节点相同(这两个点是父子关系),则形成环. 2.若所有 ...
- 数据结构--链表--判断一个字符串是否为回文串(单向链表,双向链表)
回文串为首尾对称的字符串: 如a,aba,abba等 单链表思路 1.将字符读入链表 2.找到链表中点 3.将链表从中点断开成2条,将后半条反转 4.比较两条链表是否相等(比较次数以少的为准(长度为奇 ...
- 2020考研-王道数据结构-图-图的遍历
说在开头 某些语法采用的是c11标准. 博客中中的代码均为可执行程序,以函数的形式给出,最后所有的程序会在博客完结后上传到CSDN. 头文件定义 #include <iostream> # ...
- 图11——判断图中是否为一棵树
编写算法,判断一个无向图是否是一颗树. [分析] 一个无向图G是一棵树的条件为:G必须是无回路的连通图或n-1条边的连通图,这里我们采用后者作为判断条件.例如下图所示: 上面的无向图就是一棵树,它有6 ...
- 数据结构 图 思考题2
全部每周作业和视频思考题答案和解析 见 浙江大学 数据结构 思考题+每周练习答案汇总 题目1:若有个顶点.条边,DFS的时间复杂度是多少? (该题对图的DFS遍历和存储方式有很好的理解作用) 当采用邻 ...
最新文章
- Linq-ToList与ToArray
- ZOJ 1610 Count the Colors 【线段树】
- django 通过数据库表名获取app名
- linux mysql root登录_linux下 root 登录 MySQL 报错的问题
- SAP Spartacus RouteEvent,如何从localhost跳转到其他路由路径的
- sql两个列值以下划线拼接得到一个新的列_面试必备sql知识点——MySQL基础
- HDU 2154:跳舞毯
- rvm,ruby的安装
- vb mysql数据库连接,VB连接Mysql数据库
- mysql rm-rf_rm-rf误操作的恢复过程
- 3乘3魔方第四步_【三阶魔方 - 初学】LBL第四步:顶层朝向
- 邮件服务器 二级域名,hMailServer+Roundcube+APMServ+希网二级域名+ADSL搭建邮件服务器...
- 仓库如何盘点?使用盘点机盘点有什么好处?仓库盘点方法?
- STM32 无法使用IAR下载程序问题
- UVM 中的消息机制
- charles(抓包神器)
- BUUCTF-web [极客大挑战 2019]PHP1 之 反序列化漏洞
- JetpackCompose从入门到实战学习笔记2——Modifier的简单使用
- win10禁止计算机进入休眠,Win10怎么关闭系统休眠 Win10关闭系统休眠方法
- springboot整合elasticsearch