java算法:图遍历(深度优先和广度优先)
来源:互联网 发布:手机上能注册淘宝店铺 编辑:程序博客网 时间:2024/05/24 06:53
java算法:图遍历
递归图形遍历或深度优先搜索,系统地访问图中所有的结点的方法,如,树的遍历,也是很多递归算法的基础。
访问v,递归地访问每个附属于v的(未访问过的)结点,如果图是连通的,则最终能到达所有的结点。
例1:深度优先搜索
- private void dfs(int k){
- visit(k);
- visited[k] = true;
- for(Node t = adj[k]; t != null; t = t.next){
- if(!visited[t.v]){
- dfs(t.v);
- }
- }
- }
private void dfs(int k){visit(k);visited[k] = true;for(Node t = adj[k]; t != null; t = t.next){if(!visited[t.v]){dfs(t.v);}}}
使用邻接表表示法在具有V个顶点和E条边的图中进行深度优先搜索所需要的时间与V+E成比例。
例2:广度优先搜索
- void bfs(int k){
- IntQueue q = new IntQueue(v*v);
- q.put(k);
- while(!q.empty()){
- if(!visited[k = q.get()]){
- Node t;
- visit(k);
- visited[k] = true;
- for(t = adj[k]; t != null; t = t.next){
- if(!visited[t.v]){
- q.put(t.v);
- }
- }
- }
- }
- }
void bfs(int k){IntQueue q = new IntQueue(v*v);q.put(k);while(!q.empty()){if(!visited[k = q.get()]){Node t;visit(k);visited[k] = true;for(t = adj[k]; t != null; t = t.next){if(!visited[t.v]){q.put(t.v);}}}}}
- java算法:图遍历(深度优先和广度优先)
- 深度优先和广度优先遍历算法
- 图的深度优先遍历和广度优先遍历算法
- Java实现图的深度和广度优先遍历算法
- 图遍历--深度优先和广度优先
- 数据结构和算法之:图的深度优先和广度优先遍历及其Java实现
- 图的遍历:深度优先遍历和广度优先遍历
- 深度优先遍历 广度优先遍历JAVA
- 广度优先遍历和深度优先遍历
- 深度优先遍历和广度优先遍历
- 深度优先遍历 和 广度优先遍历
- 深度优先遍历和广度优先遍历
- 深度优先遍历和广度优先遍历
- 深度优先遍历和广度优先遍历
- 深度优先遍历和广度优先遍历
- 深度优先遍历和广度优先遍历
- 图的深度和广度优先遍历算法
- 深度优先算法、广度优先算法 与 图的遍历
- java算法:递归二叉树算法
- 匈牙利命名法
- 十五. Sql server count函数
- 无配置文件使用log4j
- java输入语句
- java算法:图遍历(深度优先和广度优先)
- 用代码来控制自定义的控件 自动适应横竖屏时的相对位置
- 《TCP/IP详解-协议》(21)TCP的超时与重传
- linux数据结构
- 批处理
- java算法:冒泡排序
- 扫雷___建立工程和界面预估
- CString 实现原理
- 第一篇:测试