图的遍历 —— DFS、BFS

43 篇文章 23 订阅
订阅专栏
26 篇文章 0 订阅
订阅专栏
0.概要

本文主要从以下三个方面介绍图的遍历:

  1. 图的广度优先遍历(BFS)
  2. 图的深度优先遍历(DFS)
  3. 两种遍历一般性实现代码(C++)

1.图的广度优先遍历(BFS)

在这里插入图片描述
(1)树 (层次遍历) VS 图 (BFS——广度优先遍历)
在这里插入图片描述

(2)算法要点——BFS
在这里插入图片描述

  • 连通图
    在这里插入图片描述
  • 非连通图
    在这里插入图片描述

(3)遍历序列可变性
在这里插入图片描述

(4)空间复杂度
在这里插入图片描述
(5)时间复杂度
在这里插入图片描述
(6)广度优先生成树
在这里插入图片描述
在这里插入图片描述

  • 对⾮连通图的⼴度优先遍历,可得到⼴度优先⽣成森林

1.图的深度优先遍历(DFS)

在这里插入图片描述
(1)算法要点
在这里插入图片描述
(2)遍历序列可变性
在这里插入图片描述

(3)空间复杂度
在这里插入图片描述

(4)时间复杂度
在这里插入图片描述

(5)图遍历练习
在这里插入图片描述
在这里插入图片描述
(6)图的遍历与图的连通性

  • 无向图
    在这里插入图片描述
  • 有向图
    在这里插入图片描述

3.实现代码(BFS + DFS)
#include<bits/stdc++.h>
using namespace std;
#define max 50
//两种遍历图的算法 

int a[max][max];	//存储边 
int n,k;	//存储顶点和边
int flag[max];	//标记数组
queue<int> qu;	//广搜队列 
 
//深度优先遍历 
void dfs(int i){
	if(i>n){
		return;
	}
	else{
		for(int j=1;j<=n;j++){	//相邻顶点未必按照自然数访问 
			if(flag[j]==0&&a[i][j]==1){
				flag[j]=1;
				cout<<j<<" ";
				dfs(j);	//不需要回溯 
			} 
		}
	}
}

//广度优先遍历 
void bfs(int i){
	qu.push(i);
	flag[i]=1;
	while(!qu.empty()){
		int t=qu.front();
		cout<<t<<" ";
		qu.pop();
		for(int j=1;j<=n;j++){	//相邻顶点全部进栈 
			if(flag[j]==0&&a[t][j]==1){
				flag[j]=1;
				qu.push(j);
			}
		}
	}
	
}

//主函数 
int main(){
	cin>>n;
	cin>>k;
	
	memset(a,0,sizeof(a));	//初始化数组
	int x=0;
	int y=0;
	
	//输入边之间信息,默认顶点值为1~N 
	for(int i=1;i<=k;i++){
		cin>>x;
		cin>>y;
		a[x][y]=1;
		a[y][x]=1;
	} 
	
	cout<<"深搜:"<<endl;
	dfs(1);	//顶点1开始
	cout<<endl;
	memset(flag,0,sizeof(flag));	//重新初始化标记数组 
	
	cout<<"广搜:"<<endl;
	bfs(1);	//顶点2开始 

	return 0;
} 
遍历
QS_Sun_24的博客
05-09 4813
遍历方法主要有两种:(1)深度优先遍历,类似于树的先序遍历;(2)广度优先遍历,类似于树的层序遍历遍历设计三思:(1)没有首尾之分,所以算法中必须指定访问的第一个结点;(2)遍历过程中可能会构成一个回路,造成死循环,所以要考虑到所有的死循环问题;(3)一个结点可能和多个结点都是邻接关系,所以要使一个结点的所有邻接结点按照某种次序被访问。 又分连通和非连通,连通图中,从初始结
搜索与论(一)——DFSBFS、树与遍历
qq_44005993的博客
02-26 689
算法基础课-3.1,3.2 第三章 搜索与论(一)+ Week4——习题课 共7题,知识点如下 DFS:排列数字、n-皇后问题。 BFS:走迷宫、八数码。 树与的深度优先遍历:树的重心 树与的广度优先遍历图中点的层次 拓扑排序:有向的拓扑序列
论基础(bfs+dfs简介)
扬帆起航
03-14 1159
是一种灵活的数据结构,一般作为一种模型用来定义对象之间的关系或联系。对象由顶点(V)表示,而对象之间的关系或者关联则通过的边(E)来表示。可以分为有向和无向,一般用G=(V,E)来表示。经常用邻接矩阵或者邻接表来描述一副。在的基本算法中,最初需要接触的就是遍历算法,根据访问节点的顺序,可分为广度优先搜索(BFS)和深度优先搜索(DFS)。广度优先搜索(BFS)广度优先搜索在进一...
数算学习——的应用
最新发布
m0_71266194的博客
09-09 877
是指从图中的某一个顶点出发,按照一定的策略将图中的所有顶点访问一一遍,使得每个顶点被遍历且都遍历一次。容易看出,是一种特殊的,所以树的遍历实际上也是一种特殊的遍历遍历是树的遍历的一般化形式。遍历比树的遍历复杂,因为图中的每一个顶点都可能与其他顶点相连。也就是说,在访问过某个顶点之后,还是可能经过其他路径之后这个顶点。为了避免重复访问一个顶点,在遍历的过程中应当判断顶点是否被访问,若已被访问则不再访问。遍历有和两种基本形式,对于和都适用。
数据结构 --- 遍历 DFSBFS
weixin_60569662的博客
04-03 3755
什么是DFSBFS? 一条线走到底,深度优先遍历,每一个顶点只遍历、只打印一次的方式:DFSBFS 数据结构 --- 的存储_考拉爱睡觉鸭~的博客-CSDN博客 单纯地把邻接顶点的邻接顶点打印出来,顶点重复遍历,打印多次 从 A→F 所有的节点都遍历完了,需要做回退,从F回退到D点,找D点有没有邻接顶点,没有邻接顶点,继续做回退,退到B节点,有未访问的临接顶点,访问C顶点 如果遍历的节点已经被遍历了,不能重复遍历,要做回退 如果形成环状,也是重复遍历的情况,也要做回.........
数据结构——遍历dfsbfs
qq_52115728的博客
12-13 471
#include<iostream> using namespace std; const int N = 1000; //遍历 int visit[N]; int edge[N][N]; int v[N]; int n,e,x,y; void dfs(int num) { cout<<v[num]; visit[num]=1; for(int i=1;i<=n;i++) { if(edge[num][i]==1&&
Java数据结构——遍历(DFS+BFS)
NoBug
02-18 1091
文章目录一、例二、深度优先搜索遍历(一)、定义(二)、数据结构(三)、Java代码三、广度优先搜索遍历(一)、定义 一、例 访问序列: - DFS: v1->v2->v4->v8->v5->v3->v6->v7 - BDS: v1->v2->v3->v4->v5->v6->v7->v8 二、深度优先搜索遍历 (一)、定义 特点: 单向前进,回路回退。 二叉树: 前序遍历,中序遍历,后序遍历遍历: 从图中
遍历——BFSDFS 深度优先和广度优先搜索|算法
yuanxuaner的博客
06-18 358
问题引入 有一天,你穿越到Clannad(炒鸡好看的游戏与番剧)的小镇。你知道小镇上的每个地方与每条路。小镇的某些地方可能会藏有实现愿望的光玉。现在你要出发去收集小镇上所有的光玉。 如: 假设小镇中一个地方对应这张的一个结点,你的出生点在古河面包店(0号位置),据题意,你需要一个地点都不落地走完整张,这样才能收集完所有光玉。 BFS 广度优先搜索(Breadth First Search): 属于一层一层地扩展,每次到一个点后,把这个点其他相邻点都记录下来,作为下一层的待访问结点。
遍历——dfs
王火(旺火)
11-18 269
dfs的非递归与bfs都需要栈和队列的辅助。在重新使用栈和队列的功能之后,对栈,队列,数组直接的关系产生了疑问。在经过相关资料的查询后,明白了数组是存储结构,而栈和队列是逻辑结构。在最开始关于数据结构的定义时就有:数据结构:是指相互之间存在一种或多种特定关系的数据元素的 集合。因此,可以通过数组来实现栈和队列的功能。 dfs的非递归遍历需要用到栈的辅助:所使用的主要思想仍是遍历结点的所有邻接点,需...
dfs bfs java_java二叉树遍历——深度优先(DFS)与广度优先(BFS) 递归版与非递归版
weixin_32280985的博客
02-12 205
介绍**深度优先遍历:**从根节点出发,沿着左子树方向进行纵向遍历,直到找到叶子节点为止。然后回溯到前一个节点,进行右子树节点的遍历,直到遍历完所有可达节点为止。**广度优先遍历:**从根节点出发,在横向遍历二叉树层段节点的基础上纵向遍历二叉树的层次。DFS实现:数据结构:栈父节点入栈,父节点出栈,先右子节点入栈,后左子节点入栈。递归遍历全部节点即可BFS实现:数据结构:队列父节点入队,父节点出队...
】(二)遍历 - DFSBFS - C语言
友人帐_的博客
10-30 1291
介绍了的深度优先搜索与广度优先搜索。并分别给出了邻接矩阵与邻接表两种不同数据结构下的递归与非递归算法
DFSBFS遍历
CSDN
08-07 207
int n; //结点个数 int mp[N][N]; //邻接矩阵 int vis[N]; //记录此顶点是否遍历过; DFS void DFS(int x) { int i; countt++; if(countt==1) printf("%d",x); else printf(" %d",x); for(i=0...
树的遍历DFSBFS解析
"预备知识——树的遍历-ACM_DFS+BFS" 树的遍历是计算机科学中处理树形结构数据时常用的一种技术,主要用于访问或操作树中的所有节点。在算法竞赛(ACM)和搜索策略(DFSBFS)中,理解并掌握树的遍历技巧至关重要...
写文章

热门文章

  • DataSource数据源 10525
  • Mybatis日志配置(slf4j、log4j、log4j2) 9008
  • 排序 —— 希尔排序 8691
  • 队列——顺序存储结构实现( 循环队列 - 不同指针指向) 6679
  • 三种常见校验码 6614

分类专栏

  • java进阶 23篇
  • Java 61篇
  • Java基础 14篇
  • 前端基础 5篇
  • 计算机网络原理 14篇
  • 计算机组成原理 25篇
  • 数据结构 43篇
  • SF_C++/Java 26篇
  • Python 4篇

最新评论

  • 队列——顺序存储结构实现( 循环队列 - 不同指针指向)

    ertyuiiiohfss: 写的太好了

  • 指令系统 —— 指令格式、寻址方式、指令集

    程序=探索+优化: 为什么大家愿意收藏却不愿意点赞呢

  • DataSource数据源

    Alan_刘志强: 学习了,感谢大佬的分享

  • Mybatis日志配置(slf4j、log4j、log4j2)

    浅听微雨: 感觉你写的逻辑有点乱

  • (详解)区间DP —— 平行四边形优化

    2301_81108238: 博主,平行四边形第二个判定可以不是递增,常函数是不是也可以

最新文章

  • DataSource数据源
  • SpringBoot MybatisPlus配置介绍
  • 线程,线程池的使用
2023年2篇
2022年56篇
2021年131篇
2020年27篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家国际家具商场美陈灵山玻璃钢雕塑公司四川大型商场美陈费用玻璃钢园林雕塑摆件定制鹤山玻璃钢雕塑高青玻璃钢花盆花器玻璃钢雕塑浮雕图片常州玻璃钢雕塑设计与制作广西玻璃钢卡通雕塑龙井玻璃钢雕塑南京商场商业美陈三门峡玻璃钢商场美陈有品质的玻璃钢座椅雕塑2018狗年商场美陈奶牛玻璃钢雕塑下城区玻璃钢雕塑设计贵州省玻璃钢雕塑优质玻璃钢雕塑销售价格山西定制玻璃钢雕塑哪家便宜泡沫雕塑玻璃钢模具制作鹤壁玻璃钢卡通雕塑定制电话商场蛋糕美陈驻马店锻铜玻璃钢彩绘雕塑厂家昆山玻璃钢雕塑哪家好屯昌县玻璃钢雕塑厂家淄博公园玻璃钢雕塑定制张家界玻璃钢卡通人物雕塑吉林水果玻璃钢雕塑供应商贵阳商场美陈景观南山商场美陈香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化