【数据结构】图的遍历
创始人
2024-02-10 17:57:34
0

深度优先遍历

 深度优先遍历思想

对于图:选中一个结点,访问和其相邻的、未被访问过的点,全部访问完毕后回退到上一个结点,直至全部结点访问完毕,类似于图的先序遍历,如有邻接表,则按邻接矩阵的顺序遍历。

时间复杂度:O(|v|)

对于邻接矩阵:选中一个结点,寻找其对应列标,找到后在此行依次从左向右遍历,如为1则对其行标的元素进行访问,然后寻找此元素的列标,与上一步进行循环,遇到访问过的结点则跳过,如一个列标行所有为1的结点访问完毕,则回溯到上一层。

时间复杂度:O(|v|²)  每行v,v行v²

对于邻接表:选中一个头结点,对其表结点从左向右进行访问,访问到第一个表结点后跳转到其对应的头结点,与上一步进行循环,如遇到访问过的结点则跳过,如一个头结点的表结点全部访问完毕则跳转至上一层头结点。

时间复杂度:O(|v|+|E|)         访问头结点:O(|v|)  访问头结点的邻接结点:O(|E|)

同一个图的邻接矩阵表示唯一,因此深度优先遍历序列唯一

同一个图的邻接表表示不唯一(表结点顺序可任意),因此深度优先遍历序列不唯一


 深度优先遍历——伪代码

bool visited[MaxVertexNum] //存储访问状态的数组void DFSTraverse(Graph G){int v;for(v=0;v=0;w=NextNeighbor(G,v,w))if(!visited[w]){DFS(G,w);} //if
}

广度优先遍历 

 广度优先遍历思想

对于图:选中一个结点,访问和其相邻的、未被访问过的所有的顶点,每个顶点分别呈辐射状向下遍历,相当于树的层次遍历

对于邻接表:选中一个结点,寻找其对应头结点,找到后在此行的所有表结点全部入队,并按照从左到右的顺序依次将表结点元素的对应头结点进行上一步操作,直至所有元素都被访问过

时间复杂度:O(|v|+|E|)   访问头结点:O(|v|)  访问头结点的邻接结点:O(|E|)

 


  广度优先遍历——伪代码

 总体思想:入队一个结点,将其出队并让其所有邻接结点入队,依次循环,直至队列为空 

 如果需要遍历的图G不是连通图,假设G有2个连通分量,BFSTraverse函数的第二个for循环会对每个连通分量都使用BFS来保证全部遍历完成,即找到第一个未访问结点后对其进行BFS直至整个连通分量都被遍历完毕,然后寻找下一个未被访问的结点,其所在连通分量必定都未被访问

bool visited[MaxVertexNum] //存储访问状态的数组void BFSTraverse(Graph G){int i;for(i=0;i=0;w=NextNeighbor(G,v,w))//依次寻找v的所有邻接顶点w,每找到一个就循环一次if(!visited[w]){ //如果顶点w未被访问过visit(w); //访问顶点wvisited[w]=TRUE; //将顶点w置为已访问EnQueue(Q,w); //将顶点w入队}//if}//while
}

 时间复杂度分析:

对于递归工作栈:O(|v|)

共有v个顶点

对于邻接矩阵:O(|v|²) 

共有v行v列,全部遍历为v²,查找每个邻接点为O(|v|),总共有v个顶点

对于邻接表:O(|v|+|E|)   

访问头结点:O(|v|) ,访问头结点的邻接结点:O(|2E|)

相关内容

热门资讯

拉加德暗示欧央行不急行动:政策... 在欧洲央行连续第四次会议维持利率不变且上调今明后三年经济增长预期后,欧央行行长拉加德重申央行在利率政...
连接场景、连接政策、连接市场:... 近日,国务院常务会议专门部署“增强消费品供需适配性,进一步促进消费政策措施”,强调要以消费升级引领产...
美盈森(002303)披露控股... 截至2025年12月18日收盘,美盈森(002303)报收于3.91元,较前一交易日上涨0.26%,...
一个人就是一支队伍!徐汇区发布... “一人+AI即公司”——这种被称为“OPC”(One Person Company)的新创业形态,正...
第一部京津冀流域协同立法!《北... 2025年11月28日,北京市第十六届人民代表大会常务委员会第二十次会议通过了《北京市永定河保护条例...
南天信息(000948)披露关... 截至2025年12月18日收盘,南天信息(000948)报收于17.04元,较前一交易日上涨0.95...
扩大社会保险补贴范围政策申请本... 2025年度面向重点群体的阶段性补贴政策“扩大社会保险补贴范围政策”已进入最后半个月的申请阶段,系统...
常友科技(301557)发布信... 截至2025年12月18日收盘,常友科技(301557)报收于146.18元,较前一交易日下跌0.4...
既有真金白银又有政策服务,上海... 北杨人工智能小镇。徐汇区供图 到2026年上半年,上海徐汇将建设5个超级创业者社区。 据徐汇区介绍,...
赋能六大产业!广州越秀“高质量... 近日,广州市越秀区推进“高质量发展十条”产业政策兑现工作,涵盖了高端人才、产业发展、载体提升、行业活...