mysql是用b 树存储的吗_为什么MySQL数据库要用B+树存储索引

二叉树的定义:

二叉树是一种树形结构:

特点是与每个节点关联的子节点至多有两个(可为0,1,2)

每个节点的子节点有关联位置关系

定义:

二叉树是节点的有限集合,该集合或为空集,或由一个根元素和两棵不相交的二叉树组成(递归定义)

二叉树的两棵子树分别称为它的左子树和右子树

二叉树的5种基本形态:

空二叉树

只有根节点

只有左子树,右子树为空

只有右子树,左子树为空

左右子树都不为空

满的和完全的二叉树:

满二叉树:树中每个分支节点(非叶节点)都有两棵非空子树

完全二叉树:除最下两层外,其余节点度数都是2,如果最下面的节点不满,则所有空位都在右边,左边没有空位,如下图

扩充二叉树(由已有非空二叉树生成的一种二叉树):

是原二叉树的最小节点扩充,使原树中所有节点的度数都变成2

二叉树的性质:

性质1. 非空二叉树第 i 层上至多有 2i 个结点(i ≥ 0)

性质2. 高度为 k 的二叉树至多有 2k-1 个结点(k ≥ 0)

性质3. 对任何非空二叉树 T,若其叶结点个数为 n0,度数为 2 的结点

个数为 n2,则n0 = n2 + 1

性质4. n 个结点的完全二叉树的高度 k = ?log2(n+1)?

性质5. 满二叉树里的叶结点比分支结点多一个

二叉树的数据结构

基本操作

创建二叉树

一棵二叉树或为空(用 None 表示),或是两棵已有二叉树和要存在树根结点的一项数据,构造起的根结点代表构造出的二叉树:

BiTree(dat, left, right)

判断树空:is_empty(bitree)

访问操作,访问二叉树的组成成分:

访问二叉树的根结点数据元素:data()

取得一棵二叉树的左右子树:right(),left()

case ... esac 与其他语言中的 switch ... case 语句类似,是一种多分枝选择结构。

case 语句匹配一个值或一个模式,如果匹配成功,执行相匹配的命令。case语句格式如下:

?case工作方式如上所示。取值后面必须为关键字 in,每一模式必须以右括号结束。取值可以为变量或常数。匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;。;; 与其他语言中的 break 类似,意思是跳到整个 case 语句的最后。

?取值将检测匹配的每一个模式。一旦模式匹配,则执行完匹配模式相应命令后不再继续其他模式。如果无一匹配模式,使用星号 * 捕获该值,再执行后面的命令

1. 树

139c95c03b660d1a45ade5dacafc3bef.png

2. 红黑树

5491a2765cd62b5e49cf113078054bbe.png

3. 红黑树。。。

814cc9aba1f5cbfb7c633c9403ada064.png

4. 红黑树的定义和如何实现的就不要说了,说说红黑树的优点

39fc92ca19cf26fe91c91e32b6360469.png

5. 二叉排序树【左边比根节点小,后边比根节点大】

23eedd775a9cff1654f4f7b10227048b.png

6. 二叉排序树的退化

fa0ec5245b7cca1591b4d72c780a5b43.png

0698b328041c7f2fb8c337b3754ab9c3.png

9b96e92af1787bfeb5aa1fe6f86fb25d.png

7. 红黑树

a4cac6ce22384ff82807d3c37a313ff4.png

60f303f3bff3d66215d8c40f3f1e545c.png

efe351aa1066e429d153b8ca12a21232.png

8.因为:

4e6e02acd15df7ff3e3ed010d8821552.png

331e98be2e9d4951a066437f39b29f48.png

adae5a51c85c0b1c923648fb9bba306a.png

9.B树

632ef621fdf9f2ed07ecba65b9e58fe5.png

0aca4fc023a5263d92d085f8e8613f3c.png

67bbc345064bfccd3cb7563e5091c17d.png

a151856f5cccbb40d8570ae25a78829a.png

d01820921fb9bc79392c7929b18ae33d.png

8575f4d6166302e4269cb74ccc164bbe.png

ad6b7fc301c2213faab9c90e1755cb67.png

7e44534ccaacb340416b03cb5465d448.png

c16dc8b86967b31d1daf2d268083d9ea.png

10. 文件系统用B树,不用红黑树或别的呢

54289f94cc453147072f474c0126fb11.png

6e7eddffe3be33a380242ce74992d5ed.png

ad61db0582ac4555a1a3fbc5c1eb8e17.png

7793731608a2180f9c6a665348f846f1.png

7c4d17e1ca8d9d51139b9384415b9595.png

dea846a63b71f0d0051d86e9b1bc083e.png

c9c40dc2789b9cb39b942fcf53387b8d.png

d54416d467d65cdd2afae2cadfca530a.png

cbbb6af24e29479ca441fa03100210c8.png

11. B+ 树

1a6ee0f21ddd862b971f88585cd5d3b1.png

e35dcadbbcb65f97d157ec6fad6e2dc5.png

9c15eaf25ea789f70b7042b4caec45a0.png

b67cbcec5922a7cb8ee189ba08751fa6.png

021dda0f0b975a79b0e889aa57ccde0d.png

如果是多条的话,B 树需要做局部的中序遍历,可能要跨层访问。

而 B+ 树由于所有数据都在叶子结点,不用跨层,同时由于有链表结构,只需要找到首尾,通过链表就能把所有数据取出来了。

91c3067b2be2cb719b2bbd64711f17be.png

回到现场

4f588c2de3eb5a62289b3bc8ca41f3f9.png

56f1a013764aed8188c21f56e735b5a2.png

a71e4e94260b042d15baae21271b0ed0.png

0457d6f7f600bdc0b0ccadc0b882dc1b.pngHAHAHA

原文:https://www.cnblogs.com/qianjinyan/p/11195219.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值