数据结构
文章平均质量分 82
猎人在吃肉
这个作者很懒,什么都没留下…
展开
-
B+树在 MyISAM 和 InnoDB 的不同实现方式(图)
文章目录1、MyISAM索引实现:1)主键索引:2)辅助索引(Secondarykey)2、InnoDB索引实现1)主键索引:2)InnoDB的辅助索引3、InnoDB索引和MyISAM索引的区别:4、扩展5、参考文章:1、MyISAM索引实现:1)主键索引:MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址。下图是MyISAM主键索引的原理图:这里...转载 2020-04-26 21:00:50 · 713 阅读 · 0 评论 -
可视化的数据结构和算法演示的网站
https://www.cs.usfca.edu/~galles/visualization/Algorithms.html谷歌翻译过后如下:原创 2020-04-25 14:17:00 · 656 阅读 · 0 评论 -
数据结构 —— java 单链表、双端链表、双向链表、无序链表、有序链表
文章目录链表不同链表的特点单链表(单端链表)双端链表双向链表链表上面是一个单链表的存储原理图,head为头节点,它不存放任何的数据,只是充当一个指向链表中真正存放数据的第一个节点的作用,而每个节点中都有一个next引用,指向下一个节点,就这样一节一节往下面记录,直到最后一个节点,其中的next指向null。不同链表的特点普通链表:节点类保留下一节点的引用。链表类只保留头节点的引用,只能...转载 2019-07-09 11:54:46 · 3868 阅读 · 0 评论 -
MySQL B+tree 索引原理
原文:https://blog.csdn.net/u013235478/article/details/50625677文章目录1、二叉查找树2、平衡二叉树(AVL Tree)3、平衡多路查找树(B-Tree)4、B+Tree5、其它5.1、覆盖扫描B+树 索引 是 B+树 在数据库中的一种实现,是最常见也是数据库中使用最为频繁的一种索引。B+树 中的B代表平衡(balance),而不是二叉...原创 2018-11-14 09:25:01 · 693 阅读 · 0 评论 -
B树、B-树、B-tree、B tree 的区分和正确理解
`B-树`,即为 `B树`。因为 `B树` 的原英文名称为 `B-tree` 。而事实上,B-tree 、B-树、B树 说的同一种 “树” 。原创 2018-11-22 10:02:16 · 1472 阅读 · 0 评论 -
数据结构 —— 二叉搜索树、B树、B+树、B*树的对比
文章目录1、二叉搜索树2、B树(B-树)3、B+树4、B*树5、小结1、二叉搜索树二叉搜索树:所有非叶子结点至多拥有两个儿子(Left和Right);所有结点存储一个关键字;非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树;如:二叉搜索树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中;否则,如果查询关键字比结点关键字小,就进入左儿子...转载 2019-08-20 18:43:43 · 990 阅读 · 0 评论 -
数据结构 —— B*树
B*树 是 B+树的变体,在B+树的非根和非叶子结点再增加指向兄弟的指针。B*树的说明:B*树定义了非叶子结点关键字个数至少为(2/3)*M,即块的最低使用率为2/3,而B+树的块的最低使用率为B+树的1/2。从第1个特点我们可以看出,B*树分配新结点的概率比B+树要低,空间使用率更高...转载 2019-08-20 18:11:45 · 207 阅读 · 0 评论 -
数据结构 —— 2-3 树
文章目录一、2-3 树定义1.1、2-3 树的定义如下:1.2、特点:二、2-3树查找2.1、对H的命中查找2.2、对B的未命中的查找三、2-3树的插入3.1、向2-节点中插入节点K3.2、向一颗只含有3- 节点的树中插入节点D3.3、向一个父节点为2-节点的3-节点中插入节点Z3.4、向一个父节点为3-节点的3-节点中插入节点D3.5、分解根节点D四、2-3树删除4.1、删除非叶子节点44.2、...转载 2019-08-20 18:07:20 · 446 阅读 · 0 评论 -
二叉树、二叉搜索树、平衡二叉树、红黑树、B树、B+树概念的简单区分
文章目录1、二叉树(Binary Tree)2、二叉搜索树(Binary Search Tree)3、平衡二叉树(AVL Tree)4、红黑树(Red-Black Tree)5、B树(Balance tree)6、B+树(B+ tree)1、二叉树(Binary Tree)二叉树是每个节点最多有两个子节点的树。二叉树的叶子节点有0个字节点,二叉树的根节点或者内部节点有一个或者两个字节点。...转载 2019-08-20 13:44:26 · 1832 阅读 · 0 评论 -
其实有两种B+树
其实有两种B+树在知乎上也有人提了个问题讨论:MySQL 的 B+Tree 索引树到底该怎么画?我觉得两种都可以的,实现其中一种就好。第1种,结点内有n个元素就会n个子结点;每个元素是子结点元素里的最大值或最小值。参考文章: https://blog.csdn.net/u014106644/article/details/90174332第2种,结点内有n个元素就会n+1个子结点;...转载 2020-04-26 17:01:59 · 544 阅读 · 0 评论 -
数据结构 —— B+树
文章目录1 、B+树的定义1.1、B+树的补充说明:2、B+树的插入操作2.1、下面是一颗5阶B树的插入过程,3、B+树的删除操作3.1、下面是一颗5阶B树的删除过程1 、B+树的定义B+树是B树的变体,也是一种多路搜索树。B+树有以下的要求:1)B+树包含2种类型的结点:内部结点(也称索引结点)和叶子结点。根结点本身即可以是内部结点,也可以是叶子结点。根结点的关键字个数最少可以只有1个...转载 2019-08-20 13:16:48 · 717 阅读 · 0 评论 -
数据结构 —— B树
文章目录1、B树的定义1.1、B树的补充说明:1.2 、`B树` == `B-树` == `B-tree` == `B tree`的区别2、B树的插入操作下面以5阶B树为例,介绍B树的插入操作,3、 B树的删除操作下面以5阶B树为例,介绍B树的删除操作1、B树的定义B-tree 即 B树,B 即 Balanced,平衡的意思。B树 是一颗多路平衡查找树。我们描述一颗B树时需要指定...转载 2019-08-20 11:40:04 · 25303 阅读 · 4 评论 -
面试题:MySQL索引结构为什么采用B+树,而不是B树
文章目录一、二叉查找树1.1 性质1.2 局限性二、AVL树(平衡的二叉查找树)2.1 特性2.2 局限性三、红黑树四、B树/B+树面试题:MySQL索引结构为什么采用B+树,而不是B树 ?一、二叉查找树1.1 性质任意节点左子树不为空,则左子树的值均小于根节点的值;任意节点右子树不为空,则右子树的值均大于于根节点的值;任意节点的左右子树也分别是二叉查找树;没有键值相等的节点;...转载 2019-08-20 11:02:56 · 643 阅读 · 0 评论 -
B树中的M阶是什么含义?
描述一颗 B树时需要指定它的阶数,阶数表示了一个结点 ==**最多**== 有多少个孩子结点,一般用字母 M 表示阶数。当 M取 2 时,就是我们常见的二叉搜索树。而B树,除了根结点的阶数M >= 2(至少有两个子节点),其他节点数必须 >= 3。其实,**M阶** 就是 M树。原创 2019-08-08 19:12:16 · 31428 阅读 · 5 评论 -
数据结构 —— 红黑树:定义、性质、节点插入操作
文章目录1、红黑树性质2、和AVL树的比较3、插入过程3.1、父为黑,无任何操作3.2、父为红,叔叔为红,只颜色交换3.3、父为红,叔叔为黑,有4种情况a)爸爸在左、叔叔在右、我在左时,左转,黑加红b)爸爸在左、叔叔在右、我在右时,左右转,黑加红c)叔叔在左、爸爸在右、我在右时,左转,黑加红d)叔叔在左、爸爸在右、我在左时,右左转,黑加红1、红黑树性质1、每个结点或是红色的,或是黑色的2、根...原创 2019-08-07 09:56:06 · 946 阅读 · 0 评论 -
数据结构 —— 红黑树:图解插入示例
文章目录1、说明2、插入过程3、最终结果1、说明将下列数12、1、9、2、0、11、7、19、4、15、18、5、14、13、10、16、6、3、8、1720个数,插入到红黑树中。2、插入过程(1)插入12说明:插入的节点若是根节点,则直接将其设置为黑色(2)插入1说明:插入的节点若不是根节点,则将其设置为红色(3)插入9(4)插入2(5)插入0(6)插入11......原创 2019-08-08 15:31:17 · 782 阅读 · 1 评论 -
数据结构 —— 图解AVL树(平衡二叉树)插入节点的变化
文章目录示例1示例2参考文章:示例1初始状态如下:然后我们插入数值:1、4、5、6、7、10、9、81.1、插入 1:插入1后,节点3失去平衡,是左-左型,需要右旋调整:1.2、插入4:1.3、继续插入 5 :插入5后,节点2、3失去平衡,是右-右型,左旋转:1.4、继续插入6 :插入5后,节点2、3失去平衡,变成右-右型,需要进行左旋:1.5、继续插入7...转载 2019-07-28 07:20:02 · 2252 阅读 · 0 评论 -
数据结构 —— 图解AVL树(平衡二叉树)
文章目录1、AVL树(平衡二叉树)的定义1.1、平衡因子2、AVL树的作用:3、AVL树的基本操作3.1、插入—— 左左型的右旋:3.1.1、右旋的具体步骤:3.1.2、右旋的动画演示:3.1.3、右旋示例:3.2、插入——右右型的左旋:3.2.1、左旋的具体步骤:3.2.2、动画演示:3.2.3、左旋举例:3.3、插入——左右型的左右旋 ( 即先左后右):3.3.1、左右旋的两次旋转步骤:3.3...转载 2019-07-28 06:52:28 · 32283 阅读 · 15 评论 -
数据结构 —— 二叉树
文章目录前言1 概念1.1 结点1.2 树结点2 树2.1 树的定义2.2 结点的度2.3 结点关系(孩子结点、双亲结点、兄弟结点)2.4 结点层次2.5 树的深度2.6 树的种类3 二叉树3.1 定义3.2 二叉树特点3.3 二叉树性质3.4 斜树3.5 满二叉树3.6 完全二叉树3.7 二叉树的存储结构3.7.1 顺序存储3.7.2 链式存储3.8 二叉树遍历3.8.1 定义3.8.2 前序遍...转载 2019-07-16 16:28:48 · 783 阅读 · 0 评论 -
数据结构 —— 二叉树的4种遍历,java代码实现
文章目录1、定义根节点2、前序遍历3、中序遍历4、后序遍历5、层次遍历6、完整代码:1、定义根节点//节点数据结构class TreeNode { String value = null; TreeNode leftchildren = null; TreeNode rightchildre = null; public TreeNode(String value, TreeN...转载 2019-07-23 10:23:51 · 6577 阅读 · 3 评论 -
数据结构 —— 队列、栈、链表的区别
1、区别队列 是一种数据结构,其特点是先进先出,后进后出,只能在队首删除,在队尾增加。队列的存储方式 既可以使用 线性表 进行存储,也可以使用 链表 进行存储。栈 是一种数据结构,只能在一端进行插入和删除操作的特殊线性表,按照先进后出 (FILO)的原则存储数据。链表 是一种数据的存储方式(与其对应的是 顺序存储 结构),保存的数据在内存中不连续的,用指针对数据进行访问。2、定义2.1...原创 2019-08-01 09:43:57 · 12264 阅读 · 0 评论