首页 > 其他分享 >数据结构-B树和B+树

数据结构-B树和B+树

时间:2024-10-17 18:19:39浏览次数:11  
标签:链表 遍历 value 叶子 key 数据结构 节点

一、B树

一个节点包含多个key-value值

假设一棵B树由M个参数构建,我们将其称为M阶B树

        每个节点最多有M-1个key-value值,并且key值升序排列,每个节点最多能有M个叉

1.1 分类

二节点

三节点

四节点

五节点

key:  给每一个文件进行标号(主键)

value:  页(存储数据的地址)

1.2 例子

例:构建5阶B树

1.3 优点

        每一个节点都包含key和value,根据key找value时,只需找到key值,value就可以找到。 

而B+树只有遍历到叶子节点才能找到 value值。


二、B+树

B+树的非叶子节点仅具有索引作用,也就是说非叶子节点只存储key值,不存储value值

B+树的所有叶子节点构成一个有序链表。

优点:

B+树的叶子节点不包含value值,只做索引使用,所以节点大小相同的情况下,B+树的非叶子节点能存放更多的key值,树的高度越低。

B+树的叶子节点构成了有序链表,所以遍历整棵树只需要遍历叶子节点即可,便于区间查找。

例子

构建5阶B+树:

标签:链表,遍历,value,叶子,key,数据结构,节点
From: https://blog.csdn.net/m0_75163045/article/details/143025328

相关文章

  • 【数据结构】之数组详解
    数组是数据结构中最基础的概念之一,它在编程中被广泛应用。理解数组的工作原理、操作方式以及底层实现,对于我们构建更复杂的数据结构和算法至关重要。本文将从多个角度深入剖析数组,并以Java语言示例进行讲解,帮助你建立对数组的深刻理解。一、什么是数组?数组是一种线性数据结构......
  • Topk问题与堆排序(Java数据结构)
    前言:    接触完堆之后,也逐渐对堆了如指掌,最后再来讨论一下两个问题。    有如下场景:    1、全国有几千所大学,我如何能够快速找出排名前10的大学?    2、我如何对这10所大学排好序?    为了用堆解决问题,接下来我们就来一起学习Top......
  • Java数据结构二叉树面试题精华(画图详解)
    前言:    针对二叉树,因为涉及到递归,需要跟多的练习强化递归的思想,其中也包括需要画图理解一些想不通的问题来提升自己!    一下面这些题为例,一起来提升自己的逻辑思维能力!(可能其中一些题已经写过,但是希望能再写一遍有助于提高代码能力)相同的树:      ......
  • 算法与数据结构——堆排序
    堆排序堆排序(heapsort)是一种基于堆数据结构实现的高效排序算法。我们可以利用已经学过的“建堆操作”和“元素出堆操作”实现堆排序。输入数组并建立小顶堆,此时最小元素位于堆顶。不断执行出堆操作,依次记录出堆元素,即可得到从小到大排序的序列。以上方法虽然可行,但需借助一......
  • 数据结构八大排序的java实现
    冒泡排序package排序;importjava.util.Arrays;publicclassBubbleSort{   publicstaticvoidmain(String[]args){      int[]arr={5,7,4,2,0,3,1,6};      sort(arr);      System.out.println(Arrays.toString(arr));   }......
  • 数据结构1系列题解前瞻
    A.线段树分裂算法:线段树、(平衡树?)板子题,不多做评价。但是开发空间很大,我的写法在洛谷题解上没找到,导致当时想贺题解没贺成。B.三元上升子序列算法:线段树、树状数组、分块、(CDQ分治?)二维偏序板子,开发空间极大,想怎么写就怎么写。C.STEP算法:线段树、分块线段树维护子区间信......
  • 【数据结构】时间、空间复杂度详解
    大家有没有遇到过,为什么有些程序跑得飞快,而有些程序却慢得让人抓狂?我们可能都是这样认为的:他写的程序效率高等等,确实如此。但这背后隐藏着两个重要的概念:时间复杂度和空间复杂度。它们就像程序的“效率指标”,帮助我们评估程序的性能。一、时间复杂度:衡量速度的尺子简单来说,时......
  • 【数据结构】自己动手写一个C++链表功能
    链表数据结构在操作数据时具有更高的性能,但同时因为其结构的原因会造成时间复杂度为O(N),因此理解链表结构的底层实现能够让我们在开发中对程序的性能进行进一步优化。如果你不知道什么是链表或者时间复杂度,可以参考我另外两篇文章:【数据结构】数组、链表、堆栈、队列到......
  • 数据结构--顺序表
    简介:这是顺序表的数据结构以C/C++语言实现,编译器为VS2022,如有不对的地方欢迎大家在评论区里讨论在其中我们要用到如下头文件:#include"stdio.h"#include"stdlib.h"简单宏定义一些类型,宏定义的内容可以根据自身需求进行更换:#defineMaxsize50 //静态顺序表的最大长度#def......
  • G-数据结构-G
    \[\huge近日多做数据结构题,或恐后再读不能醒悟,或记其思路,或骂出题人,或不想刷题,虽有此篇。\]\[\]\[\]\[\]\[\]T1距离首先这题部分分很多,直接$O(n^2)$枚举点对,在树上差分即可获得70分。那么正解几乎和部分分就没什么关系了。首先看到\[ans_u=\sum_{x∈subtree_......