简单的遍历一个树形结构数据的几种方法、非递归方法效率最好。 1 (function (window, undefined) { 2 var treeNodes = [ 3 { 4 id: 1, 5 name: '1', ...
分类:
其他好文 时间:
2015-05-29 11:21:04
阅读次数:
128
1 package alibaba; 2 /** 3 * 深度优先遍历--->栈; 4 广度优先遍历--->队列; 5 */ 6 import java.util.ArrayDeque; 7 8 public class Bi...
分类:
其他好文 时间:
2015-05-27 22:38:10
阅读次数:
249
人工智能课程的实验(我的解法其实更像是算法课程的实验)用到的算法:深度优先搜索、宽度优先搜索(状态扩展的不同策略)数据结构:表示状态的结构体、多维数组(可能是最近做算法竞赛题的影响,这次并不像以前那样依赖类和面向对象了,而是用最简单(几乎没有封装)的数据表示方法和大量的全局变量来存储数据,用面向过程...
分类:
其他好文 时间:
2015-05-26 14:07:33
阅读次数:
158
使用邻接表存储图,采用深度优先遍历邻接表即可。...
分类:
其他好文 时间:
2015-05-26 09:12:24
阅读次数:
122
图中一个结点到另一个结点的最短路径,可以应用到很多现实问题上来。在执行广度优先搜索时,会自动查找从一个顶点到另一个相连顶点的最短路径。例如,查找a到d的最短路径,首先会查找从a到d是否有一条单边路径,接着查找两条边的路径,以此类推。
所以在原有的基础上,我们需要一个数组来保存从一个顶点到下一个顶点的所有边。命名为edgeTo。新的广度优先搜索代码如下:
function bfs(s){//广...
分类:
编程语言 时间:
2015-05-25 16:43:19
阅读次数:
214
完全二叉树(Complete Binary Tree):
设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第h层所有的结点都连续集中在最左边,这就是完全二叉树。
解析:
任意的一个二叉树,都可以补成一个满二叉树。这样中间就会有很多空洞。在广度优先遍历的时候,如果是满二叉树,或者完全二叉树,这些空洞是在广度优先的遍历的末尾,所以,但我们遍历到空洞的...
分类:
其他好文 时间:
2015-05-25 09:56:19
阅读次数:
127
package org.loda.graph;
import org.loda.structure.Stack;
/**
*
* @ClassName: DFS
* @Description: 深度优先搜索(无向图)
* @author minjun
* @date 2015年5月24日 上午4:02:24
*
*/
public class...
分类:
编程语言 时间:
2015-05-24 08:59:08
阅读次数:
176
乍一看,图和树或者二叉树很像,但是采用基于对象的方式来构建就会有问题,因为图可能会增长到非常大,用对象来表示就会使效率低下。
首先我们需要定义一个图的类,其中通过adj数组来表示邻接表,也就是与节点相关联的节点数组;marked数组则是用来表示该节点是否被访问过,是在深度优先搜索和广度优先搜索中用到的。
function Graph(v){//图类
this.vert...
分类:
编程语言 时间:
2015-05-21 09:09:21
阅读次数:
135
队列: 在爬虫程序中, 用到了广度优先搜索(BFS)算法. 这个算法用到的数据结构就是队列。 在python中提供了collection.deque用来实现了queue的相关操作,其官方实力如下: 集合: 在爬虫程序中, 为了不重复爬那些已经爬过的网站, 我们需要把爬过的页面的url放进...
分类:
其他好文 时间:
2015-05-20 23:48:02
阅读次数:
119
Tarjan算法适用于离线批量处理多个查询请求。基本思想是以深度优先搜索的顺序访问这颗树,给这棵树的结点染色,一开始所有结点都是白色的,而当第一次经过某个结点的时候,将它染成灰色,而当第二次经过这个结点的时候——也就是离开这棵子树的时候,将它染成黑色。...
分类:
编程语言 时间:
2015-05-19 14:54:36
阅读次数:
169