图的遍历算法 有两种 :深度优先搜索遍历 和 广度 优先搜索遍历。深度优先搜索遍历类似与 树的 先序遍历。广度优先搜索遍历类似与树的层序遍历。只不过 图 可以有 不连通的 节点,所以 得 遍历 整个顶点数组。
深搜遍历 总是 先访问当前节点的邻接点,而 广搜算法 是 先访问顶点的邻接点 要 先于 后访问顶点的邻接点 被 访问。
具体遍历顺序如下:
以下代码 以 图的 邻接多重...
分类:
其他好文 时间:
2015-04-10 13:45:10
阅读次数:
195
给定一个二叉树和一个整数,求是否存在一条从根节点到叶节点的路径,路径上所有点的和等于给定的整数 思路:用广度优先搜索,将当前节点的值传到下一层节点即可。即将每一个节点的值更新为从根节点到该点的值的和 class Solution {public: bool hasPathSum(TreeNode *...
分类:
其他好文 时间:
2015-04-10 11:02:07
阅读次数:
113
有一个大小为N*M的园子,雨后积起了水,八连通的积水被认为是链接在一起的求出园子里一共有多少水洼?****W****/***进行深度优先搜索,从第一个W开始,将八个方向可以到达的 W修改为 .*每次进行深度优先搜索的时候就将链接的水坑换成了.*进行的深度优先搜索的次数就是水坑数 */#include...
分类:
其他好文 时间:
2015-04-09 23:37:45
阅读次数:
256
求一棵二叉树的最低子树的高度 思路:用队列实现广度优先搜索即可,将每一层的节点放入队列,然后弹出时将下一层节点放入,遇到叶子节点时即返回当前的高度 class Solution {public: int minDepth(TreeNode *root) { if (!root) return 0; ...
分类:
其他好文 时间:
2015-04-09 21:42:15
阅读次数:
105
这一题运用广度优先搜索可以解决,主要是各个状态的转移以及某个状态出现过要标记,避免重复,进入死循环。
下面是AC代码,上面有详细的讲解:
# include
# include
# include
using namespace std;
class data //队列的结点,
{
public:
int water[3]; ...
分类:
其他好文 时间:
2015-04-09 08:53:22
阅读次数:
118
8 * 8 的棋盘,“马“ 初始位置于 ,按 “日” 行走,一次性不重复踏遍整个棋盘,共有多少种方案?并打印行走方案。...
分类:
其他好文 时间:
2015-04-08 13:13:42
阅读次数:
236
大致思路和大白书上的相同,不过感觉书上的决策部分讲解的并不是非常清楚,因此我在这里讲解一下我的决策思路。
首先,d(i,j)表示根节点为i的子树,当它的父节点为j(j=0或1)时的x的最小值(x的含义书上有讲解),要将该子树根节点和父节点相连的边的情况计算在内。接下来遍历森林中的每一棵树,对于每一棵树的根节点进行特别的处理,然后就对该树进行深度优先搜索dfs(i)。
...
分类:
其他好文 时间:
2015-04-07 21:37:44
阅读次数:
160
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).
For example:
Given binary tree {3,9,20,#,#,15,7},
3
/ 9 20...
分类:
其他好文 时间:
2015-04-06 17:23:37
阅读次数:
123
背景(以下背景资料转载自:http://www.cnblogs.com/springfor/p/3874591.html?utm_source=tuicool)DFS(Dpeth-first Search)顾名思义,就是深度搜索,一条路走到黑,再选新的路。记得上Algorithm的时候,教授举得例子就是说,DFS很像好奇的小孩,你给这个小孩几个盒子套盒子,好奇的小孩肯定会一个盒子打开后继续再在这个...
分类:
其他好文 时间:
2015-04-06 17:16:36
阅读次数:
191
广度优先算法:模拟队列:数据量较小,需要打印路径坐标STL队列:数据量较大,只需要打印步数迷宫问题Description定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0...
分类:
编程语言 时间:
2015-04-06 11:22:02
阅读次数:
148