`

学习B树

阅读更多
B树是一种平衡的多叉树,一棵m阶B树是一棵平衡的m路搜索树。它如果不是空树的话,必须满足下列的性质:
1、根结点至少有两个子女;(即根结点的度数大于等于2)
2、每个非根结点所包含的关键字个数j满足:int(m/2)<=j<=m-1;(如果m为2,则j==1,一定为二叉树)
3、除根结点以外的所有结点(不包括叶子结点)的度数正好是关键字总数加1,故内部子树个数k满足int(m/2)<=k<=m;
4、所有的叶子结点都位于同一层

ps:
1,结点的度数:即结点拥有的子树数。
2,树的阶数(路数):即一个结点最多能有多少个子节点,也就是每个结点上的键值个数,比如二叉树的阶数是2.
3,树的关键字:即键值key,比如 查找树 某个结点的键值为0,该结点就必须排在键值1的结点的左边。对结点排序起作用的那个值就是键值。

在B树中,每个结点中关键字从小到大排列,并且当该结点的孩子是非叶子结点时,该k-1个关键字正好是k个孩子包含的关键字的值域的划分。

因为叶子结点不包含关键字,所以可以把叶子结点看成在树里实际上并不存在外部结点,指向这些外部结点的指针为空,叶子结点的数目正好等于树中所包含的关键字总个数加1。

B树中的一个包含n个关键字,n+1个指针的结点一般形式为:(N,P0,K1,P1,K2,P2,...,Kn,Pn),其中Ki为关键字,K1<K2<...<Kn,Pi是指向包括Ki到Ki+1之间的关键字的子树的指针。

在B树中查找关键字的方法是,首先把根结点取来,在根结点所包含的关键字K1,K2,...Kn查找给定的关键字,可用顺序查找或二分查找法,若找到等于给定值的关键字,则查找成功;否则,一定可以确定要查找的关键字在Ki与Ki+1之间,Pi为指向子树结点的指针,此时取指针Pi所指的结点继续查找,直到找到,或者指针Pi为空时查找失败。

*B树的性能(对于N个关键字最多需要查询多少层)
设B-树包含N个关键字,因此有N+1个叶子结点,叶子都在第I层。因为根至少有两个孩子,因此第二层至少有两个结点。除根和叶子外,其它结点至少有┌m/2┐个孩子,因此在第三层至少有2*┌m/2┐个结点,在第四层至少有2*(┌m/2┐^2)个结点,...,在第I层至少有2*(┌m/2┐^(l-2) )个结点,于是有:
N+1 ≥ 2*┌m/2┐I-2
考虑第L层的结点个数为N+1,那么2*(┌m/2┐^(l-2))≤N+1,也就是L层的最少结点数刚好达到N+1个
即: I≤ log┌m/2┐((N+1)/2 )+2
所以,当B-树包含N个关键关键字时,B-树的最大高度为l-1(因为计算B-树高度时,叶结点所在层不计算在内)
即:log┌m/2┐((N+1)/2 )+1。
这个公式保证了B-树的查找效率是相当高的。

B树的应用
B树主要应用在文件系统,为了将大型数据库文件存储在硬盘上,以减少访问硬盘次数为目的而提出的一种平衡多路查找树。

B树的插入、删除参考http://blog.csdn.net/hijiankang/article/details/9166451
分享到:
评论

相关推荐

    最简单的B树

    **学习B树的关键点** 1. **理解节点结构**:掌握每个节点如何存储数据和子节点,以及如何通过关键字进行区分。 2. **掌握查找算法**:理解如何根据关键字进行查找,以及如何沿着树结构向下遍历。 3. **插入操作**...

    【转】深入研究B树索引

    **深入研究B树索引** B树(B-tree)是一种自平衡的树数据结构,广泛应用于数据库和文件系统中,特别是在实现索引存储时。...无论是进行数据分析、数据库设计还是系统开发,深入学习B树都是不可或缺的知识点。

    B树插入代码C++实现

    B树(B-tree)是一种自平衡的树数据结构,它能够保持数据排序并适用于大量数据的存储系统,如文件系统。这种数据结构的设计允许...学习B树不仅可以提升你对数据结构的理解,也有助于解决涉及大数据存储和检索的问题。

    算法:B树源代码

    B树,全称为平衡多路查找树(Balanced Multiway ...总的来说,这个压缩包提供了学习B树算法的实用资源,通过分析源代码,你可以掌握如何在实际编程中应用B树数据结构,这对于提升数据结构理解和算法设计能力大有裨益。

    B树索引算法 VC实现

    **B树索引算法** B树(B-tree)是一种自平衡的树数据结构,它能够保持数据排序,常用于数据库和文件...项目附带的文档提供了对算法和实现的详细解释,以及测试验证,对于学习和应用B树索引算法具有很高的参考价值。

    B树实现---- 图书管理例子演示

    在IT领域,数据结构是计算机科学的基础之一,B树(B-tree)作为一种自平衡的查找树,被广泛应用于数据库和文件系统中。...通过实例和图解学习,我们可以更直观地掌握B树的精髓,为实际开发工作打下坚实基础。

    算法学习:从B树、B+树、B-树谈到R-树

    本文将探讨一种针对大规模数据存储优化的查找树结构——B树、B+树和B*树,以及在地理信息系统中广泛使用的R树。这些数据结构主要用于解决外存储器中的高效查询问题,尤其是磁盘I/O操作。 首先,我们来看B树,这是一...

    B-树 B+树 源代码 C++ 数据结构

    本项目提供的源代码是C++实现的B-树和B+树,有助于学习者深入理解这两种数据结构的内部机制。 首先,B-树(Balanced Tree)是一种自平衡的多路搜索树,它的每个节点可以有多个子节点,通常为2到32个。B-树的主要...

    B树演示程序_C++实现

    总之,这个C++实现的B树演示程序是一个很好的学习资源,它涵盖了数据结构和算法的核心知识,特别是对于理解和应用B树这种高效的数据结构非常有益。通过实际操作和观察,你不仅可以掌握B树的基本概念,还能了解如何在...

    B_Tree1.rar_MáS_b tree java_tttee1.com

    如果你需要进一步学习B树,你可以解压文件并研究其中的代码或文档,以便深入理解这种强大的数据结构。同时,如果需要完整的资料,可能需要查找其他来源或访问提及的"tttee1.com"网站获取更多信息。

    B+树的c语言代码实现

    与B树相比,B+树的所有叶子节点都位于同一层,且叶子节点之间通过指针相互连接,这使得B+树非常适合范围查询和顺序访问。 #### 三、代码结构分析 1. **文件头注释**: - 作者:bysvking - 时间:2012年5月 - ...

    b+b-树c语言版

    总结,这个压缩包提供了一个学习和研究B+树的良好平台,对于理解数据结构和算法,以及提高C语言编程技能都非常有价值。通过分析和实践其中的代码,你可以掌握B+树的基本操作,并了解到如何在实际项目中优化数据访问...

    B树算法的C++实现

    B树(B-tree)是一种自平衡的树数据结构,它...通过阅读和学习这个源代码,你可以深入了解B树的内部工作机制,掌握如何在实际项目中应用B树算法。这将对理解和优化大数据存储、数据库查询性能等方面提供宝贵的知识。

    算法学习:B-树与B+树

    算法学习:B-树与B+树 B-树是一种自平衡的搜索树,它可以对大量数据进行高效的查找、插入和删除操作。下面是 B-树的概念、查找、插入和删除操作的详细介绍。 B-树的概念 m阶B-树是一棵空树或满足以下特性的m叉树...

    B树的实现(C++)

    **B树概述** B树(Balanced Tree),全称为自平衡多路...对于学习数据结构和算法的初学者,尤其是对B树感兴趣的人来说,这是一个非常有价值的资源。通过研究这个实现,可以深入理解B树的工作原理,并提升C++编程技巧。

    Btree&哈夫曼树.pptx

    **B树** B树是一种自平衡的树数据结构,它能够保持数据排序,...通过学习B树和哈夫曼树,开发者能够理解和运用它们解决实际问题,提高软件系统的性能和效率,从而在IT领域中脱颖而出,成为不可替代的高端开发人才。

    cpp-QT实现B树可视化

    这个工具不仅可以帮助理解B树的运作原理,也是学习C++和QT结合应用的一个很好的实践项目。在实际开发中,还可以考虑添加更多的功能,如导出图片、保存和加载树状态,以及更复杂的用户交互等,以提升用户体验。

    bset.rar_WORKING

    在IT行业中,B树(B-tree)是一种自平衡的查找树...通过理解和分析这些代码,我们可以深入学习B树的数据结构和算法,这对于数据库系统开发者、存储系统设计者或任何需要处理大量有序数据的IT专业人员都是非常有价值的。

    B树第三节学习(插入与删除的思路与理论)

    ### B树第三节学习(插入与删除的思路与理论) #### 插入操作 在了解B树的插入操作之前,我们需要明确几个概念。B树是一种自平衡的搜索树,它的每一个节点都包含多个关键字以及指向子节点的指针。在B树中,节点的...

    B树+B树实现的图书管理系统(C语言)(广东工业大学课程设计2019).zip

    综上所述,这个课程设计项目不仅让学习者掌握了B树的数据结构和C语言编程,还锻炼了他们实际解决问题的能力,将理论知识与实践相结合,为未来进入IT行业打下了坚实基础。通过这样的实践,学生能够更深刻地理解数据...

Global site tag (gtag.js) - Google Analytics