it编程 > 软件设计 > 算法

平衡二叉树,红黑树,B树和B+树的区别及其应用场景

167人参与 2024-08-06 算法

平衡二叉树

平衡二叉树(avl)

avl树全称g.m. adelson-velsky和e.m. landis,这是两个人的人名。

平衡二叉树也叫平衡二叉搜索树(self-balancing binary search tree)又被称为avl树, 可以保证查询效率较高。

具有以下特点:


avl的问题

众所周知,io操作的效率很低,在大量数据存储中,查询时我们不能一下子将所有数据加载到内存中,只能逐节点加载(一个节点一次io)。如果我们利用二叉树作为索引结构,那么磁盘的io次数和索引树的高度是相关的。平衡二叉树由于树深度过大而造成磁盘io读写过于频繁,进而导致效率低下。

在这里插入图片描述
为了提高查询效率,就需要 减少磁盘io数 。为了减少磁盘io的次数,就需要尽量降低树的高度 ,需要把原来“瘦高”的树结构变的“矮胖”,树的每层的分叉越多越好。针对同样的数据,如果我们把二叉树改成 三叉树:
在这里插入图片描述
上面的例子中,我们将二叉树变成了三叉树,降低了树的高度。如果能够在一个节点中存放更多的数据,我们还可以进一步减少节点的数量,从而进一步降低树的高度。这就是多叉树

普通树的问题

红黑树

在这个棵严格的平台树上又进化为“红黑树”{是一个非严格的平衡树 左子树与右子树的高度差不能超过1},红黑树的长子树只要不超过短子树的两倍即可!

在这里插入图片描述
当再次插入7的时候,这棵树就会发生旋转

在这里插入图片描述

b+ 树和 b 树的差异:

一个b+树中大概能存放多少条索引记录?

b+树的非叶子节点不存储用户记录,只存储目录记录,相对b树每个节点可以存储更多的记录,树的高度会更矮胖,io次数也会更少。

使用b+树存储的索引crud执行效率如何?
c 新增

o(lognn)

n = 高度

什么是自适应哈希索引?

自适应哈希索引是innodb引擎的一个特殊功能,当它注意到某些索引值被使用的非常频繁时,会在内存中基于b-tree所有之上再创建一个哈希索引,这就让b-tree索引也具有哈希索引的一些优点,比如快速哈希查找。这是一个完全自动的内部行为,用户无法控制或配置

使用命令
show engine innodb status \g ;

查看 insert buffer and adaptive hash index

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

《LeetCode热题100》---<5.③普通数组篇五道>

08-06

为什么要用B+树

08-06

h2database源码解析-将B+树刷新到磁盘

08-06

LeetCode 450.删除二叉搜索树中的节点和669.修建二叉搜索树思路对比 及heap-use-after-free问题解决

08-06

机器学习 - 决策树

08-06

leetcode-键盘行

08-06

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论