图的遍历和树的遍历类似,我们希望从图中某一顶点出发访遍图中其余顶点,且使每一个顶点仅被访问一次,这一过程就叫做图的遍历(Traverse Graph)。 图的遍历方法一般有两种,第一种是我们在前面讲过的《深度优先遍历(Depth First Search)》,也有称为深度优先搜索,简称为DFS。第二 ...
分类:
其他好文 时间:
2018-02-26 11:38:06
阅读次数:
185
第一节,深度和广度优先指啥 针对图的遍历而言的。 深度优先遍历的主要思想:沿着图的某一分支遍历直到末端,然后回朔,然后再沿着另一条进行同样的遍历,直到所有顶点都被访问过为止。 广度优先遍历的主要思想:首先以一个未被访问过的顶点作为起始顶点,访问其所有相邻的顶点,然后对每个相邻的顶点,再访问它们相邻的 ...
分类:
编程语言 时间:
2018-02-26 11:29:12
阅读次数:
133
图的遍历和树的遍历类似,我们希望从图中某一顶点出发访遍图中其余顶点,且使每一个顶点仅被访问一次,这一过程就叫做图的遍历(Traverse Graph)。 图的遍历方法一般有两种,第一种是深度优先遍历(Depth First Search),也有称为深度优先搜索,简称为DFS。第二种是《广度优先遍历( ...
分类:
其他好文 时间:
2018-02-26 11:28:40
阅读次数:
174
队列也是一组元素的集合,也提供两种基本操作:Enqueue(入队)将元素添加到队尾,Dequeue(出队)从队头取出元素并返回。就像排队买票一样,先来先服务,先入队的人也是先出队的,这种方式称为FIFO(First In First Out,先进先出),有时候队列本身也被称为FIFO。 下面我们用队 ...
分类:
其他好文 时间:
2018-02-26 11:12:44
阅读次数:
249
数据结构与算法系列 目录 最近抽空整理了"数据结构和算法"的相关文章。在整理过程中,对于每种数据结构和算法分别给出"C"、"C++"和"Java"这三种语言的实现;实现语言虽不同,但原理如出一辙。因此,读者在了解和学习的过程中,择其一即可! 下面是整理数据数据和算法的目录表,对于每一种按照C/C++ ...
分类:
编程语言 时间:
2018-02-24 15:09:34
阅读次数:
239
深度优先搜索的图文介绍 1. 深度优先搜索介绍 图的深度优先搜索(Depth First Search),和树的先序遍历比较类似。 它的思想:假设初始状态是图中所有顶点均未被访问,则从某个顶点v出发,首先访问该顶点,然后依次从它的各个未被访问的邻接点出发深度优先搜索遍历图,直至图中所有和v有路径相通 ...
分类:
其他好文 时间:
2018-02-24 11:47:56
阅读次数:
169
迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径。 它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止。 基本思想 通过Dijkstra计算图G中的最短路径时,需要指定起点s(即从顶点s开始计算)。 此外,引进两个集合S和U。S ...
分类:
编程语言 时间:
2018-02-24 11:42:03
阅读次数:
150
迷宫问题很容易可以理解为广度优先搜索问题,站在一个点上,首先试一试自己周围的点是否可以走,如果是路则加入待走队列,如果是墙则丢弃。迷宫问题在广度优先搜索的时候需要特别注意的就是要及时抛弃,遇到走过的点立即丢弃,遇到墙立即丢弃,不然时间复杂度就很高。 题目描述 Ignatius被魔王抓走了,有一天魔王 ...
分类:
其他好文 时间:
2018-02-17 17:32:57
阅读次数:
174
题目描述:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 题目链接:二叉树的深度 思路:通过广度优先遍历(BFS)来获取二叉树的深度。 步骤: 1 如果根结点为空,则返回0。 2 创建实现了Queue接口的LinkedList ...
分类:
其他好文 时间:
2018-02-15 11:06:31
阅读次数:
152