T1:杭州旅行 floyd 求最小环,相当于枚举环上编号最大的点进行转移 正确性: 一个环中的最大结点为k(编号最大),与他相连的两个点为i,j,这个环的最短长度为g[i][k]+g[k][j]+i到j的路径中,所有结点编号都小于k的最短路径长度根据floyd的原理,在最外层循环做了k-1次之后,d ...
分类:
其他好文 时间:
2017-05-06 21:56:20
阅读次数:
157
http://acm.hdu.edu.cn/showproblem.php?pid=3594 题意: 一个有向图,判断是否强连通和每条边只在一个环中。 思路: 仙人掌问题。 用Tarjan算法判断强连通分量的时候,记录每节结点的父节点。当找到一个环后,回溯将该环上的所有结点+1,如果有结点出现2次了 ...
分类:
其他好文 时间:
2017-05-05 21:51:27
阅读次数:
131
路径压缩 前面的并查集的复杂度实际上有些极端情况会很慢。比如树的结构正好是一条链,那么最坏情况下,每次查询的复杂度达到了 O(n)。 路径压缩 的思想是,我们只关心每个结点的父结点,而并不太关心树的真正的结构。 这样我们在一次查询的时候,可以把查询路径上的所有结点的 father[i] 都赋值成为根 ...
分类:
其他好文 时间:
2017-05-01 00:27:21
阅读次数:
391
1、区别 1) 二叉树的深度优先遍历的非递归的通用做法是采用栈,广度优先遍历的非递归的通用做法是采用队列。 2) 深度优先遍历:对每一个可能的分支路径深入到不能再深入为止,而且每个结点只能访问一次。要特别注意的是,二叉树的深度优先遍历比较特殊,可以细分为先序遍历、中序遍历、后序遍历。具体说明如下: ...
分类:
其他好文 时间:
2017-04-30 20:32:40
阅读次数:
215
(1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值; (3)左、右子树也分别为二叉排序树; 现有,如下一棵二叉查找树。 (图1) 现在,若要删除图1中,任意节点,需要考虑如下三种情况: (1)需要删除的节点下并没有其他子节 ...
分类:
其他好文 时间:
2017-04-22 00:26:41
阅读次数:
218
使用索引很简单,只要能写创建表的语句,就肯定能写创建索引的语句,要知道这个世界上是不存在不会创建表的服务器端程序员的。然而, 会使用索引是一回事, 而深入理解索引原理又能恰到好处使用索引又是另一回事,这完全是两个天差地别的境界(我自己也还没有达到这层境界)。很大一部份程序员对索引的了解仅限于到“加索 ...
分类:
数据库 时间:
2017-04-14 20:27:21
阅读次数:
204
树、森林和二叉树之间的转换 树转换为二叉树 1. 加线 在所有兄弟结点之间加一条连线。 2. 去线 树中的每个结点,只保留它与第一个孩子结点的连线,删除它与其它孩子结点之间的连线。 3. 层次调整 以树的根节点为轴心,将整棵树顺时针旋转一定角度,使之结构层次分明。(注意第一个孩子是结点的左孩子,兄弟 ...
分类:
其他好文 时间:
2017-04-05 19:20:53
阅读次数:
144
二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。 ...
分类:
编程语言 时间:
2017-03-30 21:44:52
阅读次数:
242
普通二叉查找树
二叉查找树是指具有下列性质的非空二叉树
若根结点的左子树不空,则左子树的所有结点值均小于根结点值;
若根结点的右子树不空,则右子树的所有结点值均不小于根结点值;
根结的左右树也...
分类:
其他好文 时间:
2017-03-27 18:47:44
阅读次数:
334
L2-004. 这是二叉搜索树吗? 一棵二叉搜索树可被递归地定义为具有下列性质的二叉树:对于任一结点, 其左子树中所有结点的键值小于该结点的键值; 其右子树中所有结点的键值大于等于该结点的键值; 其左右子树都是二叉搜索树。 所谓二叉搜索树的“镜像”,即将所有结点的左右子树对换位置后所得到的树。 给定 ...
分类:
其他好文 时间:
2017-03-26 19:14:57
阅读次数:
196