博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
图的深度优先搜索与广度优先搜索
阅读量:4932 次
发布时间:2019-06-11

本文共 2410 字,大约阅读时间需要 8 分钟。

1     /** 2      * dfs(vertex v){ 3      *     visit v; 4      *     for each neighbor w of v 5      *         if(w has not been visited){ 6      *         dfs(w);     7      *     } 8      * } 9      */10     /*深度优先搜索从顶点  v 开始*/11     public Tree dfs(int v){12         List
searchOrders = new ArrayList
();//被搜索顶点的顺序13 int[] parent = new int[vertices.size()];//顶点的父结点14 for (int i = 0; i < parent.length; i++) {15 parent[i] = -1;16 }17 boolean[] isVisited = new boolean[vertices.size()];//跟踪已经访问过的结点18 dfs(v, parent, searchOrders, isVisited);19 20 return new Tree(v, parent, searchOrders);21 }22 private void dfs(int v, int[] parent, List
searchOrders, boolean[] isVisited){23 searchOrders.add(v);24 isVisited[v] = true;25 26 for(int i : neighbors.get(v)){27 if(!isVisited[i]){28 parent[i] = v;29 dfs(v, parent, searchOrders, isVisited);30 }31 }32 }33 /**34 * 广度优先搜索35 * bfs(vertex v){36 * create an empty queue for storing vertices to be visited;37 * add v into the queue;38 * mark v visited39 * while the queue is not empty{40 * dequeue a vertex, say u, from the queue41 * add u into list for traversed vertices;42 * for each neighbor w of u43 * if w has nor been visited{44 * add w into the queue;45 * mark w visited;46 * }47 * }48 * }49 */50 public Tree bfs(int v){51 List
searchOrders = new ArrayList
();52 int[] parent = new int[vertices.size()];53 for (int i = 0; i < parent.length; i++) {54 parent[i] = -1;55 }56 java.util.LinkedList
queue = new java.util.LinkedList
();57 58 boolean[] isVisited = new boolean[vertices.size()];59 queue.offer(v);//进入队列60 isVisited[v] = true;61 62 while(!queue.isEmpty()){63 int u = queue.poll();//从队列中取出元素64 searchOrders.add(u);65 for(int w:neighbors.get(u)){66 if(!isVisited[w]){67 queue.offer(w);//进入队列68 parent[w] = u;69 isVisited[w] = true;//进入队列的结点就表示已经被访问过70 }71 }72 }73 return new Tree(v, parent, searchOrders);74 }

 

转载于:https://www.cnblogs.com/wanghui390/p/3435158.html

你可能感兴趣的文章
SSL 2289——庆功会
查看>>
Linux命令--su与sudo
查看>>
python课堂练习
查看>>
区块链资料高清PDF合集
查看>>
xml实现AOP
查看>>
bzoj 4237稻草人
查看>>
在发送intent启动activity之前判断是否有activity接收
查看>>
html5特征检测
查看>>
js中几种实用的跨域方法原理详解
查看>>
打印图形
查看>>
《第一行代码》学习笔记7-活动Activity(5)
查看>>
ngx_http_core_module 模块
查看>>
两个常见的oracle索引
查看>>
一位有着工匠精神的博主写的关于IEnumerable接口的详细解析
查看>>
MySQL中特有的函数If函数
查看>>
安装Python3.6.2报错:zipimport.ZipImportError: can't decompress data; zlib not available
查看>>
【蓝桥杯】入门训练 Fibonacci数列
查看>>
实验十 指针2
查看>>
常见HTTP状态码
查看>>
vim 空格和换行的删除和替换
查看>>