当前位置: 首页 > news >正文

5.2图的BFS与DFS遍历

一.BFS遍历

1.图的广度优先遍历代码实现

说明:
1.广度优先遍历,类比树的层次遍历(树属于特殊的图)
2.对应算法想象图的物理结构存储:
邻接矩阵表示唯一时间复杂度:O(|V|^2);
邻接表不唯一:O(|V|+2|E|))
3.空间复杂度分析:
最坏情况:入队操作最大:O(|v|)

bool visited[MAX_VERTEX_NUM];
//增加对非连通图的判断逻辑
void BFSTraverse(Graph G)
{for (i = 0; i <G.vexnum;++i)visited[i]=FALSE;InitQueue(Q);for(i=0;i<G.vexnum;++i){if(!visited[i])//对每一个连通分量进行一次BFSBFS(G,i);}
}
//下面代码仅针对于连通图
void BFS(Graph,int v){//从以前顶点v的代码入口visit(v);visited[v]=TRUE;Enqueue(Q,v);while(!isEmpty(Q)){DeQueue(Q,v);for(w=FirstNeighbor(G,v);w>=0;w=NextNeighbor(G,v,w)){//检测v的所有临接点(图的基本操作) if(!visited[w]){visit(w);visited[w]=TRUE;EnQueue(Q,w);}}}
}

2.广度优先生成树

一个连通分量——>广度优先生成树
多个连通分量——>广度优先生成森林

二.DFS遍历

复杂度分析:
空间复杂度O(|V|)依据栈的深度建立
时间复杂度,依据物理存储结构的建立

1.图的深度优先遍历代码实现

类比树的先根遍历

void PreOrder(TreeNode *R){if(R!=NULL){    visit(R);while(R->child!=NULL)PreOrder(T);}
}

代码实现

//前置代码,针对于非连通图
void DFSTraverse(Graph G)
{for (i = 0; i <G.vexnum;++i)visited[i]=FALSE;//InitQueue(Q);for(v=0;v<G.vexnum;++v){if(!visited[v])//对每一个连通分量进行一次BFSDFS(G,v);}
}
//图的深度优先遍历
bool visited[MAX_VERTEX_NUM];//访问标记数组
void DFS(Graph G,int v){visit(v);visited[v]=TRUE;for(w=FirstNeighbor(G,v);w>=0;w=NextNeighbor(G,v,w))if(!visited[w]){DFS(G,w);}}
http://www.lryc.cn/news/90227.html

相关文章:

  • JSP+SQL网上选课系统(源代码+论文+答辩PPT)
  • C语言数据结构——树、堆(堆排序)、TOPK问题
  • springboot+vue 刘老师
  • 学生网上考试报名系统的设计与实现
  • Jmeter实现分布式并发
  • 动态xml文件配置 hibernate validator 约束校验
  • Vue绑定class样式与style样式
  • 集权攻击系列:如何利用PAC新特性对抗黄金票据?
  • 同程面试(部分)(未完全解析)
  • 讯飞星火_VS_文心一言
  • Java的集合
  • addr2line 使用,定位kernel panic 代码位置
  • OpenAI目前所有模型介绍
  • 【P43】JMeter 吞吐量控制器(Throughput Controller)
  • 方正书版命令详解
  • Gradio的web界面演示与交互机器学习模型,高级接口特征《6》
  • 本地项目上传到Git(Gitee)仓库
  • Android 12.0屏蔽掉SystemUI的某些通知提示音
  • 测试计划模板二
  • 华为OD机试真题B卷 Java 实现【分奖金】,附详细解题思路
  • IMX6ULL平台I2C数据结构分析
  • 实时时钟 RTC(2)
  • 弄懂局部变量
  • 倾斜摄影三维模型数据的高程偏差修正的几何纠正技术方法探讨
  • 怎么发表CCF期刊?CCF期刊有什么不同之处? - 易智编译EaseEditing
  • feat:使用企业微信JS-SDK的onMenuShareAppMessage()实现点击转发自定义分享内容(TypeScript)
  • Java键盘事件处理及监听机制解析
  • Git详解——安装、使用、搭建、IDEA集成
  • 【JavaSE】Java基础语法(二十一):内部类
  • Ceph应用