从二叉查找树到B+树

954 阅读1分钟

二叉查找树 (Binary Search Tree)

www.cs.usfca.edu/~galles/vis…

复杂度 O(Log2n)

缺点:

容易产生畸形, 形成类似线性链表的数据结构

平衡二叉查找树 (AVL Tree)

www.cs.usfca.edu/~galles/vis…

一个节点的子节点数高度差不允许超过1

为了保证树的平衡,在数据插入和删除的过程中进行旋转操作

缺点:

搜索效率不足,一般来说在树结构中的数据存储深度决定它搜索时的IO次数

每一次IO操作加载的内容太少

多路平衡查找树 (B Tree)

www.cs.usfca.edu/~galles/vis…

特性:多路/绝对平衡,路数=关键字+1

为了保证树的平衡,在数据插入和删除的过程中进行关键字的合并和节点的分裂

优点:路数越多,树的高度越低。路数多的情况下,一次IO操作获取的数据条数多。

加强版多路平衡查找树 (B+ Tree)

关键字搜索采用左闭合区间

非叶子节点不保存数据信息,只保存关键字和子节点的引用,数据保存在叶子结点上

叶子节点顺序排列,形成有序链表

优点: 扫库扫表能力强

非叶子节点不保存数据导致非叶子节点可容纳的关键字变多,路数变多

排序能力更强

查询效率更稳定

参考链接:juejin.cn/post/684490…