1.
图的广度优先搜索实现借助于队列结构;
图的深度优先搜索除了递归方式外,还可借助堆栈、迭代方式实现。
2.
线性表的链式存储结构所需的存储空间一般要多于顺序存储结构。因为顺序存储结构只要存元素的内容,链式存储还需要多一块区域来存储相邻节点的地址。
3.
根结点的层数为0,根的孩子层数为1
树的深度:结点层数最大值。
树的高度:最大层数+1
4.树转换为...
分类:
其他好文 时间:
2014-08-28 19:52:56
阅读次数:
227
题意:给出中序和后序序列,求从根到叶子结点这样路径和值最小的叶子结点。如果和值相等,则选择叶子结点值较小的那个。
思路:由中序和后序序列递归地构造二叉树。顺序存储显然不行,使用链式存储。由于每个结点输入的是数字而不是字母,这里采用整型数组来存的,而不再是字符串,可能更方便些。build(n,a1,a2)函数是利用中序序列a1和后序序列a2构造有n个结点的二叉树,返回根结点指针。递归构造出二叉树后...
分类:
其他好文 时间:
2014-08-26 19:40:26
阅读次数:
200
思想: 简单的深度优先搜索。
思想: 动态规划:
n = s.length();
Record[i] = 0 , ( i = n || is...
分类:
其他好文 时间:
2014-08-25 02:17:23
阅读次数:
187
马上又要秋招了,赶紧复习下基础知识。这里复习下二叉树和图的深搜与广搜。从图的遍历说起,图的遍历方法有两种:深度优先遍历(Depth First Search), 广度优先遍历(Breadth First Search)。图搜索的经典应用走迷宫、N皇后、二叉树遍历等。遍历:定义按某种顺序访问“图”中所有的节点。...
分类:
其他好文 时间:
2014-08-24 12:58:32
阅读次数:
8475
深度优先搜索算法(Depth First Search),是搜索算法的一种。是沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所有边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节...
分类:
其他好文 时间:
2014-08-19 18:29:35
阅读次数:
278
1. 二分搜索详见笔者博文:二分搜索的那些事儿,非常全面2. 矩阵二分搜索(1) 矩阵每行递增,且下一行第一个元素大于上一个最后一个元素(2) 矩阵每行递增,且每列也递增3. DFS 深度优先搜索适用场景:(1) 输入数据:如果是 递归数据结构(如单链表、二叉树),则一定可以使用DFS(2) 求解目...
分类:
其他好文 时间:
2014-08-19 16:12:34
阅读次数:
207
原理和方法可以参考: 图的深度优先遍历教科书上的C代码,递归: 1 //教科书方法,邻接表 2 bool visited[MAX]; 3 void visitFunc(int v); 4 5 void dfsTraverse(Graph G) 6 { 7 for(v = 0; v vis...
分类:
其他好文 时间:
2014-08-17 03:44:27
阅读次数:
243
递归回溯 由于回溯法是对解空间的深度优先搜索,因此在一般情况下可用递归函数来实现回溯法如下:t表示递归深度,即当前扩展节点在解空间树的深度。n用来控制递归深度。当t>n时表示算法搜索到叶节点。void backtrack( int t ){ if ( t>n ) output(x); else fo...
分类:
其他好文 时间:
2014-08-14 23:42:46
阅读次数:
275
题意:给你一个N×M的简单图,其中有门,墙,通道,和文件,打开每扇门必须要有某一把特定的钥匙,问你最多能拿到几个文件解题思路:深度优先,每一次走一个格子将它标记以后都不走,遇到门以后如果有钥匙,将门打开,如果没有,將门加入队列,搜完以后,遍历没有打开的门看是否已经有钥匙了,如果有 从门开始dfs,直...
分类:
其他好文 时间:
2014-08-12 10:06:14
阅读次数:
223