btree学习笔记

这篇具有很好参考价值的文章主要介绍了btree学习笔记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介

btree:balance tree,平衡多叉树,类比avl:平衡二叉树,都是有平衡的属性 (多个子树高度一致),只不过是二叉和多叉的区别。

使用场景

文件系统如extfs、jffs,sql,磁盘上的索引查找场景。多叉树的层级相比二叉树会更低,磁盘查找中,树的每一层访问相当于一次IO操作,多叉树会减少IO操作。

  • 二叉树磁盘访问

如下实例7个索引,3层,3次IO操作。

btree学习笔记,数据结构,学习,笔记,btree

  • 多叉树

一个磁盘块可以保存多个索引,7个节点,2层,只有2次IO操作,多叉树有更少的IO操作。
btree学习笔记,数据结构,学习,笔记,btree

btree中的概念

  • 多叉树顺序:从左往右数字增长。

  • btree的节点

一个节点中可以有:指针、数据 (key、value)

1)指针:指向子节点。

2)数据中有key 值 和 保存的具体数据。

btree学习笔记,数据结构,学习,笔记,btree

叶子节点:只有数据,没有孩子节点,即指针为空。

  • 阶数

一个节点最多有多少个孩子节点。(指针个数)

  • 指针和数据的个数:

1)数据比指针少1个

2)根节点最少1个数据

3)对于m阶btree,非根节点最少m/2 -1 个数据。

一个磁盘块一般保存一个节点。(磁盘索引特点,非btree的特点)

如何保证平衡

  • 平衡的概念:访问每个叶子节点的层级要尽可能一致,防止抖动太多。

  • 平衡的定义:(类比)

avl:左右子树的高度差1;

rbtree:黑高;

btree: 所有叶子节点在同一层。

  • 执行平衡的动作:

avl:左右旋转。

btree:分裂。

分裂操作

分裂 + 进位(上浮)

从节点中心分裂,分裂出来的节点 插入到父节点 (进位)。 上浮到根节点后层级变高。

插入 和 删除的操作:

参见:B树和B+树的插入、删除图文详解 - nullzx - 博客园 (cnblogs.com)

B+ tree

非叶子节点的数据中只有key,而没有value,这样一个磁盘块中可以保存更多的指针和key,分叉可以更多。

参见:BTree和B+Tree详解_b+brtt的结构图_菜鸟笔记的博客-CSDN博客

参考资料

BTree和B+Tree详解_b+brtt的结构图_菜鸟笔记的博客-CSDN博客

B树和B+树的插入、删除图文详解 - nullzx - 博客园 (cnblogs.com)文章来源地址https://www.toymoban.com/news/detail-705798.html

到了这里,关于btree学习笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 《数据结构》学习笔记

    1.算法分析的两个主要任务:正确性(不变性 + 单调性) + 复杂度。 2.复杂度分析的主要方法: 迭代:级数求和; 递归:递归跟踪 + 递推方程 猜测 + 验证 3.级数: (1)算术级数:与末项平方同阶 T ( n ) = 1 + 2 + ⋯ + n = n ( n + 1 ) 2 = O ( n 2 ) T(n) = 1 + 2 + cdots + n = frac{n(n+1)}{2} =

    2024年01月25日
    浏览(49)
  • Redis数据结构学习笔记

    图文主要参考小林Coding的图解redis数据结构 除了它是内存数据库,使得所有的操作都在内存上进⾏之外,还有⼀个重要因素,它实现的数据结构,使 得我们对数据进⾏增删查改操作时,Redis 能⾼效的处理。 :::tips redisDb 结构 ,表示 Redis 数据库的结构,结构体⾥存放了指向了

    2024年02月02日
    浏览(47)
  • 数据结构学习笔记——多维数组、矩阵

    数组是由n(n≥1)个 相同数据类型 的数据元素组成的有限序列,在定义数组时,会为数组分配一个固定大小的内存空间,用来存储元素,数组在被定义后,其维度不可以被改变。 数组在确定其维度和维界后,元素的个数是固定的,所以不能进行插入和删除运算。数组中最常

    2024年02月03日
    浏览(49)
  • 【雨学习】数据结构入门---线性结构的笔记及代码实现

    数组元素类型相同,大小相等 定义:         n个节点离散分配,彼此通过指针相连,每个节点只有一个前驱节点,且只有一个后续节点         首节点前没有前驱节点,尾节点没有后续节点 专业术语:         首节点:第一个有效节点         尾节点:最后

    2024年01月23日
    浏览(55)
  • 数据结构学习笔记——二叉排序树

    查找算法中,基于树这种数据结构进行查找即为树形查找,可将其分为 二叉排序树 、 平衡二叉树 和 B树 三种树形查找方法: 二叉排序树也称为二叉查找树或二叉搜索树(注意:与二分查找的判定树不同),其中各结点值的大小关系是: 左子树根结点右子树 ,且左、右子树

    2024年02月09日
    浏览(56)
  • 区块链学习笔记(2)BTC数据结构

    1.哈希指针(hash pointers):一般的指针存储的是某个结构体在内存中的地址,哈希指针除了要保存结构体的地址外,还要保存这个结构体的哈希值。 通过哈希指针,我们不但可以找到结构体在内存中的位置,同时还可以检测出结构体的内容是否遭到了篡改。 因为我们记录了

    2023年04月16日
    浏览(56)
  • 【学习笔记】数据结构算法文档(类C语言)

    1.1.1 线性表的顺序存储表示 1.1.2 顺序表中基本操作的实现 1.1.2.1 初始化 1.1.2.2 取值 1.1.2.3 查找 1.1.2.4 插入 1.1.2.5 删除 1.1.2.6 计数 1.2.1 单链表的定义和表示 ★ 关于结点 1.2.2 单链表基本操作的实现 1.2.2.1 初始化 1.2.2.2 取值 1.2.2.3 查找 1.2.2.4 插入 1.2.2.5 删除 1.2.2.6 前插法创建单

    2024年02月07日
    浏览(44)
  • Python学习笔记(三) 数据结构与常用方法

    数据结构是计算机内部对数据按一定的结构进行排列组织的存放,以达到快速查找,提取但目的 常见的数据结构有:列表、字典、元组、集合、双端队列、区间 通过键值对key=value的形式保存元素的一种数据结构 一种不可变的数据结构,一旦创建不能添加、删除与修改 出于数

    2024年02月04日
    浏览(51)
  • Halcon学习笔记(二)数据结构、通道+XLD

    图像(Image):图像是Halco中最基本的数据结构,用于表示二维图像。它包含了图像的像素值、尺寸、颜色模式等信息。图像可以是灰度图像(单通道图像)或彩色图像(多通道图像),颜色通道可以是RGB、HSV等。图像可以通过读取文件、采集设备或者算法生成。 区域(Regi

    2024年02月22日
    浏览(35)
  • C#学习笔记--复杂数据类型、函数和结构体

    特点:多个数据变量地一个集合体,可以自己命名 种类:枚举、数组和结构体 枚举:整型常量的集合 数组:任意变量类型的顺序存储的数据集合 结构体:任意变量类型的数据组合成的数据块 枚举 : 枚举可以方便表示对象的各种状态,本质还是一种变量。 例如我们可以用

    2024年02月08日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包