Ford-Fulkerson算法是通过深度优先搜索寻找增广路,并沿着它增广。 与之相对,Dinic算法总是寻找最短的增广路,并沿着它增广。因为最短增广路的长度在增广过程中始终不会变短,所以无需每次都通过宽度预先搜索来寻找最短增广路。 我们可以先进行一次宽度优先搜索,然后考虑由进距离顶点指向远距离顶点 ...
分类:
编程语言 时间:
2017-07-31 20:46:57
阅读次数:
165
前序遍历:先根节点后左节点再右节点。 序列化:保证每个节点都有左右子节点,没有的用null代替,然后前序遍历 中序遍历:先左节点后根节点再右节点 后续遍历:先左节点后右节点再根节点 重建二叉树:前序+中序 根据前序确定根节点,根据中序确认左右子节点,然后递归 宽度优先遍历:利用队列先进先出 二叉搜索 ...
分类:
其他好文 时间:
2017-07-30 17:13:45
阅读次数:
131
总结一下 : 这个递归的过程是逐渐优化的过程,容易搞混的地方主要在于对于前序序列和中序序列的中的参数变化,所以一点很重要,每一步的目的是什么,需要哪些参数来满足需求,搞清楚了之后在写代码. ...
分类:
其他好文 时间:
2017-07-30 17:12:45
阅读次数:
161
题目:给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问) 给一棵二叉树 {3,9,20,#,#,15,7} : 返回他的分层遍历结果: ...
分类:
编程语言 时间:
2017-07-28 22:20:57
阅读次数:
197
感悟: 遍历图上的点先想到宽度优先搜索, 有很多模板 5.9: 图、节点 adj.get(edge[0]).add(edge[1]); adj.get(edge[1]).add(edge[0]); }), set的size==1当作叶节点的判断标准.加入节点存储器list中, 用while-loop ...
分类:
其他好文 时间:
2017-07-23 22:50:52
阅读次数:
188
上一篇讲了DFS,那么与之相应的就是BFS。也就是 宽度优先遍历,又称广度优先搜索算法。 首先,让我们回顾一下什么是“深度”: 更学术点的说法,能够看做“单位距离下,离起始状态的长度” 那么广度是什么呢? 个人认为,能够这么归纳: 何为广度? 能够看做“距离初始状态距离相等的结点”的集合 那么BFS ...
分类:
其他好文 时间:
2017-07-20 10:25:05
阅读次数:
167
题目: 有一棵二叉树,请设计一个算法,按照层次打印这棵二叉树。给定二叉树的根结点root, 请返回打印结果,结果按照每一层一个数组进行储存,所有数组的顺序按照层数从上往下,且每一层的数组内元素按照从左往右排列。保证结点数小于等于500。 解题思路: 类似上一篇文章中的思路 源码: ...
分类:
编程语言 时间:
2017-07-17 11:46:32
阅读次数:
176
广度优先算法是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型。Dijkstra单源最短路径算法和Prim最小生成树算法都采用了和宽度优先搜索类似的思想。其别名又叫BFS,属于一种盲目搜寻法,目的是系统地展开并检查图中的所有节点,以找寻结果。换句话说,它并不考虑结果的可能位置,彻底地搜 ...
分类:
编程语言 时间:
2017-07-13 01:07:51
阅读次数:
323
1、算法基本思想 分枝限界方法採用宽度优先的方式搜索解空间树, 将活结点存放在一个特殊的表中。在扩展结点处,先生成全部儿子结点,将那些导致不可行解或非最优解的儿子舍弃。其余儿子增加活结点表中。 此后, 从活结点表中依照某种规则取出一个结点作为当前扩展结点,继续搜索。 2、分类 从活结点表中选择下一扩 ...
分类:
编程语言 时间:
2017-06-19 12:41:16
阅读次数:
129
宽度优先搜索(BFS,Breadth-First Search)也是搜索的手段之一,与深度优先搜索类似,从某个状态出发搜索所有可以到达的状态。 与深度优先搜索 ...
分类:
其他好文 时间:
2017-06-03 15:06:20
阅读次数:
126