数据结构-第七章(B树和B+树)

注:B树和B+树

考点:大纲对B树和B+树的要求各不同,重点在于考察B树,不仅要求理解B树的基本特点,还要掌握B树的建立、插入和删除操作,而B+树则只考查基本概念。

这一节是留了坑的(时间问题),可以直接看晴落学长的。

个人这个是别人整理好的资料,知识点整理比较好,在二刷题的时候再补上坑。

注:主要把B树的规则在脑海中,可以很清楚的浮现,并且有意识的脑海操作即可。

1.B树

插入过程:以例子为导向(是性价比最高的) ,复习时,直接来一题,检测自己在哪个环节有问题。

2.B+树

3.树的小结

二叉排序树既拥有类似于折半查找的特性,查找效率可以达到O(logn),又采用了链表作为存储结构,插入删除很高效。因此是动态查找表的一种适宜表示。

二叉排序树可能会在一些极端情况下退化成线性表,为了避免树的高度增长太快,我们使用平衡二叉树对其进行限制,防止这种极端情况的出现,保证我们的查找效率都是O(logn)。

平衡二叉树的维护太过困难,插入和删除操作后需要频繁调整全树整体拓扑结构,维护这种高度平衡所付出的代价比获得的效益大的多。因此如果我们需要频繁的插入删除又需要一定的查找效率,我们使用红黑树这一种放宽平衡条件的树形查找结构。

B树是应用于文件系统的一种平衡的多路查找树,B树的查找操作涉及外存的存取,而磁盘IO的时间代价昂贵,因此我们需要降低树的深度选择多路查找树。

B+树是应文件系统所需而出的B树的变种,实际应用于文件索引和数据库索引。B+树单一结点由于不含有关键字对应记录的存储地址,因此可以存储更多的关键字,使得查询的IO次数更少,同时B+树的查找路径从根结点到叶结点,查询效率更加稳定。此外B+树在范围查找上的优势更大,因为叶结点形成有序链表。

相关推荐
浅念-1 小时前
MySQL 索引底层完整详解|磁盘Page|B+树推导|聚簇非聚簇索引|索引SQL操作
大数据·数据库·b树·sql·mysql·面试·职场和发展
旖旎夜光1 小时前
LeetCode 30:串联所有单词的子串(滑动窗口) —— 题解
数据结构·c++·算法·leetcode·滑动窗口
白狐_7981 小时前
408 数据结构|完全二叉树两道典型题:第 6 层叶结点数与叶结点总数
数据结构·算法
郝学胜_神的一滴2 小时前
并查集深度入门:从玄学抽象到 QuickFind & QuickUnion 源码实战
数据结构·算法
GeekZHR3 小时前
C语言指针2:数组名、二级指针、指针数组,一次把“指针和数组“讲透
c语言·数据结构·算法·指针
烬羽3 小时前
求第 K 大,为什么反而要用最小堆?
javascript·数据结构·算法
郝学胜-神的一滴4 小时前
并查集深度入门:从玄学抽象到 QuickFind & QuickUnion 源码实战
数据结构·c++·python·程序人生·算法·软件开发
hold?fish:palm15 小时前
24 回文链表
数据结构·c++·链表
qeen8719 小时前
【数据结构】自平衡二叉搜索树各种旋转算法原理解析及AVL树的C++实现
数据结构·c++·算法
冻柠檬飞冰走茶20 小时前
PTA基础编程题目集 7-35有理数均值(C++语言实现)
开发语言·数据结构·c++·算法·均值算法