代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Java
】
图的遍历
作者:
茶壶
/ 发布于
2015/6/29
/
741
/** * 图 * @author DBJ(dubenju@126.com) */ public class DefaultGraph implements Graph { /** 顶点集 */ private ArrayList<Vertex> vertexes; /** 邻接表 */ private ArrayList<LinkedList<Edge>> adjacencyList; private int edgeSize; /** * 遍历 */ /** * 深度优先遍历(DFS) */ public void depthFirstTraversal(GraphVisitor visitor) { // reset Visited initVisit(); for(int i = 0; i < this.vertexes.size(); i ++) { Vertex vertex = this.vertexes.get(i); if(vertex.isVisited() == false) { do_DFS(vertex, visitor); } } } /** * 深度优先遍历x * @param v 顶点 * @param visitor */ private final void do_DFS(Vertex v, GraphVisitor visitor) { // first visit this vertex visitor.visit(this, v); v.setVisit(true); // for each edge from this vertex, we do one time and this for loop is very classical in all graph algorithms for(Edge e = firstEdge(v); isEdge(e); e = e.getNextEdge()) { if(e.getTo().isVisited() == false) { do_DFS(e.getTo(), visitor); } } } /** * 广度优先遍历(BFS) */ public void breathFirstTraversal(GraphVisitor visitor) { // reset Visited initVisit(); for(int i = 0; i < this.vertexes.size(); i ++) { Vertex vertex = this.vertexes.get(i); if(vertex.isVisited() == false) { do_BFS(vertex, visitor); } } } /** * 广度优先遍历x * @param v 顶点 * @param visitor */ private void do_BFS(Vertex v, GraphVisitor visitor) { // BFS will use an queue to keep the unvisited vertexes. we can also just use java.util.LinkedList LinkedList<Vertex> queue = new LinkedList<Vertex>(); queue.add(v); while(!queue.isEmpty()) { Vertex fromV = queue.poll(); if (fromV.isVisited() == false) { visitor.visit(this, fromV); fromV.setVisit(true); for(Edge e = firstEdge(fromV); isEdge(e); e = e.getNextEdge()) { Vertex toV = e.getTo(); if(toV.isVisited() == false) { queue.add(toV); } } } } } 下略 }
试试其它关键字
图
遍历
同语言下
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
茶壶
贡献的其它代码
(
9
)
.
毛玻璃效果
.
整数N随机分成n份
.
如何实现获取当前定位信息
.
获取相册的所有相片
.
plist基本操作
.
获取客户端真实ip地址
.
仿async的 并行执行和序列执行函数
.
二元搜索
.
图的遍历
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3