数据结构
崔世勋
这个作者很懒,什么都没留下…
展开
-
红黑树
红黑树(RBT)的定义:它或者是一颗空树,或者是具有一下性质的二叉查找树: 1.节点非红即黑。 2.根节点是黑色。 3.所有NULL结点称为叶子节点,且认为颜色为黑。 4.所有红节点的子节点都为黑色。 5.从任一节点到其叶子节点的所有路径上都包含相同数目的黑节点。 所有性质1-5合起来约束了该树的平衡性能--即该树上的最长路径不可能会大于2倍最短路径。为什么?因为第1条该树上的节点...转载 2014-09-07 11:15:25 · 726 阅读 · 0 评论 -
B-树、B+树
3.B- 树 3.1什么是B-树 具体讲解之前,有一点,再次强调下:B-树,即为B树。因为B树的原英文名称为B-tree,而国内很多人喜欢把B-tree译作B-树,其实,这是个非常不好的直译,很容易让人产生误解。如人们可能会以为B-树是一种树,而B树又是一种一种树。而事实上是,B-tree就是指的B树。特此说明。 我们知道,B 树是为了磁盘或其它存储设备而设计的一种多叉(下面你会...转载 2014-09-07 11:46:43 · 634 阅读 · 0 评论 -
二叉树的前序、中序、后序相互变换
(一)已知前序、中序,求后序 1.确定根(前序中第一个结点为根),确定左子树,确定右子树(在中序中,找到前序所示根,其左为左子树,其右为右子树) 2.在左子树中递归 3.在右子树中递归 4.打印当前根 题目: 已知二叉树的先序和中序遍历字符串,编程实现输出后序遍历字符串, 如果没有成功输出Failed,最后分析时间和空间复杂度。 题目来源: 经典题目,也是网易游戏20...转载 2014-09-07 13:36:18 · 727 阅读 · 0 评论 -
图的矩阵表示
1.无向图的邻接矩阵 定义:设G=(V,E)的顶点集为V={v1,v2,...}用a(i,j)表示G中顶点vi到vj的边数。称矩阵A(G)=(aij)为G的邻接矩阵。 (1)是一个对称矩阵 (2)若为无环图,则第i行(列)的无素之和等于顶点vi的度数 在邻接矩阵A的幂矩阵中,每个元素有待定的含义, 定理:设G是具有n个结点集{v1,v2,...,vn}的图,其邻接矩阵为A,则A^l(l=...转载 2014-09-16 15:09:51 · 937 阅读 · 0 评论 -
hashtable hashmap
hashtable1.hashtable的实现内部用一个entry数据组,来保存所有的数据。在向hashtable中put时,先计算key的hash值,然后根据hash值计算index值,作为数据table的下标,由于可能出现两个插入值同index情况,所以为这些一样的entry对象,构造成一个链表存放。即一个entry对象需要这些属性:key, value, next 。 java的hashtab原创 2016-05-19 14:44:53 · 390 阅读 · 0 评论 -
LSM树
Log Structured Merge Tree,简单地说,LSM的设计目标是提供比传统的B+树更好的写性能。LSM通过将磁盘的随机写转化为顺序写来提高写性能,而付出的代价就是牺牲部分读性能、写放大(B+树同样有写放大的问题,即实际写入的的物理数据量是比写入数据量多)。 LSM相比B+树能提高性能的本质原因是:外存的随机读写都要慢于顺序读写。 优化写性能 如果我们对写性能特别敏感,最好Ap...转载 2019-07-22 13:23:13 · 206 阅读 · 0 评论 -
BloomFilter
BloomFilter主要用于检索一个元素是否在集合中,优点是空间效率和查询效率比较高。缺点是存在误差率。 由上图我们可以看出,此时A、B、C、D四个数据各自经过f1和f2方法进行两次hash算法,然后分别指向位上面,只有当f1和f2指向的位都为1时,才会标记为存在。 ...转载 2019-07-22 13:44:49 · 138 阅读 · 0 评论