SPFA算法 tarjan算法 Tarjan算法是用来求有向图的强连通分量的。 Tarjan算法是基于对图深度优先搜索的算法,每个强连通分量为搜索树中的一棵子树。搜索时,把当前搜索树中未处理的节点加入一个堆栈,回溯时可以判断栈顶到栈中的节点是否为一个强连通分量。 定义DFN(u)为节点u搜索的次序编 ...
分类:
其他好文 时间:
2016-11-02 17:25:33
阅读次数:
385
红黑树简介红黑树是一种自平衡二叉查找树,也有着二叉搜索树的特性,保持着右边始终大于左边结点key的特性。前面提到过的AVL树,也是二叉搜索树的一种变形,红黑树没有达到AVL树的高度平衡,换句话说,它的高度,并没有AVL树那么高的要求,但他的应用却更加的广泛,实践中是相..
分类:
编程语言 时间:
2016-11-01 21:32:54
阅读次数:
284
1、树与树的表示
什么是树?
客观世界中许多事物存在层次关系
人类社会家谱
社会组织结构
图书信息管理
分层...
分类:
其他好文 时间:
2016-10-31 14:11:42
阅读次数:
264
中序遍历 步骤如下: 关于时间复杂度,其实也是O(n)。分析如下: 前序遍历(相比中序遍历,只是输出当前节点的顺序稍有不同) 后序遍历(需要加入两个小的技巧,一是dump节点,二是倒序输出路径) 复杂度分析: 空间复杂度同样是O(1);时间复杂度也是O(n),倒序输出过程只不过是加大了常数系数。 上 ...
分类:
其他好文 时间:
2016-10-30 19:24:04
阅读次数:
196
在以下讨论中,虽然任意复杂的关键字都是允许的,但为了简单起见,假设它们都是整数,并且所有的关键字是互异的。 总概 使二叉树成为二叉查找树的性质是,对于树中的每个节点X,它的左子树中所有关键字值小于X的关键字值,而它的右子树中所有的关键字值大于X的关键字值。注意,这意味着该树所有的元素可以用某种统一的 ...
分类:
其他好文 时间:
2016-10-30 17:08:37
阅读次数:
237
转载:Vamei 出处:http://www.cnblogs.com/vamei 树的特征和定义 树(Tree)是元素的集合。我们先以比较直观的方式介绍树。下面的数据结构是一个树: 树有多个节点(node),用以储存元素。某些节点之间存在一定的关系,用连线表示,连线称为边(edge)。边的上端节点称 ...
分类:
其他好文 时间:
2016-10-29 12:11:17
阅读次数:
158
这篇文章用来回顾二叉搜索数的以下操作: 遍历 前序遍历 中序遍历 后序遍历 层序遍历 查找 查找最大值 查找最小值 查找指定值 前序遍历 中序遍历 后序遍历 层序遍历 查找最大值 查找最小值 查找指定值 获取指定属性 获取总节点/叶节点数量 获取二叉树的高度(根的高度为1) 行为操作 插入 删除 获 ...
分类:
其他好文 时间:
2016-10-25 02:10:30
阅读次数:
266
不定期更新leetcode解题java答案。 采用pick one的方式选择题目。 题目要求判断树是否为二叉搜索树。要求为:1、一个节点的左子树的所有节点均小于该节点;2、一个节点的右子树上的所有节点均大于该节点;3、所有节点均满足1,2的条件。 容易想到采用递归的方式依次向下检测。递归需要传递的参 ...
分类:
其他好文 时间:
2016-10-22 20:25:48
阅读次数:
147
*映射表 * java类库为映射表提供了两个通用的实现 HashMap和TreeMap * HashMap对键进行散列,TreeMap用键的整体顺序对元素进行排序,构建成搜索树 * * 与Set相似,HashMap的速度要比TreeMap要快一点,同时不需要按照排列访问,也应该选择HashMap * ...
分类:
编程语言 时间:
2016-10-22 14:05:31
阅读次数:
154
一、问题描述 输入一棵二叉搜索树,现在要将该二叉搜索树转换成一个排序的双向链表。而且在转换的过程中,不能创建任何新的结点,只能调整树中的结点指针的指向来实现。 二、实现思路 在二叉搜索树中,每个结点都有两个分别指向其左、右子树的指针,左子树结点的值总是小于父结点的值,右子树结点的值总是大于父结点的值 ...
分类:
其他好文 时间:
2016-10-13 01:36:36
阅读次数:
164