赞
踩
背景
平衡二叉树
平衡二叉树的插入和删除操作都是O(logn)的,因此它的查找性能很高,比非平衡的二叉查找树要快得多。
实现方式:红黑树、 Treap、伸展树等。
核心思想
在插入或删除节点时,如果发现子树不平衡,则对子树进行旋转操作,使其重新达到平衡
旋转操作有三种,哪边高度底就哪边旋转, 提升高度
图解过程
问题点
查找操作
例子
不支持范围查询快速查找,范围查询时需要从根节点多次遍历,查询效率比较低
背景
平衡二叉树操作效率高,但是存在不少问题,常规需要把树加载到内存里面
如果节点少则没问题,但是如果节点多 则高度很大,进行IO操作则存在性能问题
场景
为了解决平衡二叉树的这个问题,设计一种单个节点可以存储多个键值和数据的平衡树,也就是我们接下来要说的 多叉树
多叉树
也叫 多路查找树(muitl-way search tree)
每一个节点的子树可以多于两个,且每一个节点处可以存储多个元素,常见的就是B树、B+树等
多叉树通过重新组织节点,降低了树的高度,可以提高IO效率
应用
操作系统IO操作都会利用磁盘预读原理,如果一个节点大小是一个存储页(4KB)
存储每个节点只需要一次IO即可完成存储
B树在存储系统里面广泛应用,比如数据库系统、文件系统等
都会利用磁盘预读原理,如果一个节点大小是一个存储页(4KB)
存储每个节点只需要一次IO即可完成存储
B树在存储系统里面广泛应用,比如数据库系统、文件系统等
具体多叉树的应用及原理B-Tree和B+Tree的底层逻辑会在 MySQL底层存储B-Tree和B+Tree原理分析 中解释说明
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。