数据结构
文章平均质量分 94
文·若
架构师们好,我是练习两年半的java实习生,喜欢唱跳rap篮球
展开
-
数据结构与算法——B+树
B+树 ☆☆☆☆☆B+树是对B树的一种变形树,它与B树的差异在于:非叶结点仅具有索引作用,也就是说,非叶子结点只存储key,不存储value;树的所有叶结点构成一个有序链表,可以按照key排序的次序遍历全部数据。1 B+树存储数据若参数M选择为3,那么每个结点最多包含2个键值对,我们以3阶B+树为例,看看B+树的数据存储插入 C N G A H E K Q 数据为例2 B树和B+树对比B+ 树的优点在于:1.由于B+树在非叶子结点上不包含真正的数据,只当做索引使用,因此在内存相同的原创 2021-03-04 21:44:08 · 470 阅读 · 3 评论 -
数据结构与算法——B树
B-树☆☆☆☆前面我们已经学习了二叉查找树、2-3树以及它的实现红黑树。2-3树中,一个结点做多能有两个key,它的实现红 黑树中使用对链接染色的方式去表达这两个key。接下来我们学习另外一种树型结构B树,这种数据结构中,一个结点允许多于两个key的存在。B树是一种树状数据结构,它能够存储数据、对其进行排序并允许以O(logn)的时间复杂度进行查找、顺序读取、插入和删除等操作。1 定义用阶定义B树B树中允许一个结点中包含多个key,可以是3个、4个、5个甚至更多,并不确定,需要看具体的实现。现在我原创 2021-03-04 21:42:57 · 520 阅读 · 1 评论 -
数据结构与算法——红黑树
红黑树(面试必问)☆☆☆☆我们前面介绍了2-3树,可以看到2-3树能保证在插入元素之后,树依然保持平衡状态,它的最坏情况下所有子结点 都是2-结点,树的高度为lgN,相比于我们普通的二叉查找树,最坏情况下树的高度为N,确实保证了最坏情况下的 时间复杂度,但是2-3树实现起来过于复杂,所以我们介绍一种2-3树思想的简单实现:红黑树。红黑树主要是对2-3树进行编码,红黑树背后的基本思想是用标准的二叉查找树(完全由2-结点构成)和一些额外的信 息(替换3-结点)来表示2-3树。我们将树中的链接分为两种类型:原创 2021-03-04 21:41:48 · 341 阅读 · 1 评论 -
数据结构与算法——平衡树
平衡树之前我们学习过二叉查找树,发现它的查询效率比单纯的链表和数组的查询效率要高很多,大部分情况下,确实是 这样的,但不幸的是,在最坏情况下,二叉查找树的性能还是很糟糕。 例如我们依次往二叉查找树中插入9,8,7,6,5,4,3,2,1这9个数据,那么最终构造出来的树是长得下面这个样子:我们会发现,如果我们要查找1这个元素,查找的效率依旧会很低。效率低的原因在于这个树并不平衡,全部是向 左边分支,如果我们有一种方法,能够不受插入数据的影响,让生成的树都像完全二叉树那样,那么即使在最坏情 况下,查找的效原创 2021-03-04 21:40:31 · 398 阅读 · 1 评论 -
数据结构与算法——二叉树、堆、优先队列
七、树7.1 树7.1.1 树的定义树是我们计算机中非常重要的一种数据结构,同时使用树这种数据结构,可以描述现实生活中的很多事物,例如族谱、单位的组织架构、等等。树是由n(n>=1)个有限结点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树树具有以下特点:每个结点有零个或多个子结点;没有父结点的结点为根结点;每一个非根结点只有一个父结点;每个结点及其后代结点整体上可以看做是一棵树,称为当前结点的父结点的一个子树;7.1.2 树的相关术语结点的度:一个原创 2020-09-24 15:40:12 · 418 阅读 · 0 评论 -
Java版数据结构与算法——线性表
五、线性表线性表是最基本、最简单、也是最常用的一种数据结构。一个线性表是n个具有相同特性的数据元素的有限序列前驱元素: 若A元素在B元素的前面,则称A为B的前驱元素后继元素: 若B元素在A元素的后面,则称B为A的后继元素线性表的特征:第一个数据元素没有前驱,这个数据元素被称为头结点;最后一个数据元素没有后继,这个数据元素被称为尾结点;除了第一个和最后一个数据元素外,其他数据元素有且仅有一个前驱和一个后继。如果把线性表用数学语言来定义,则可以表示为(a1,…ai-1,ai,ai+1,…an原创 2020-08-13 15:55:25 · 402 阅读 · 0 评论