数据结构B树/B+树

简介: 数据结构B树/B+树

B树(多路平衡查找树)

在这里插入图片描述

  1. 满足以下性质:
    1.每个结点至多m棵子树,至多m-1个关键字
    2.若根结点不是终端结点,至少有两根子树
    3.除根节点外,所有非叶结点至少有m/2下取整课子树,即至少含有m/2下取整-1个关键字
    4.所有叶结点都在同一层次(每个节点的子树高度一致),叶节点不携带信息,类似于查找判定树的失败节点,实际上这些点不存在,指向这些节点的指针为空
    一定是平衡的!,且关键字是排序的
  2. 高度:
    高度不包括查找失败的叶子结点,就像上面所说,叶子结点实际上算是不存在的
    最小高度:
    在这里插入图片描述
    最大高度:
    在这里插入图片描述
  3. 插入
    根本原则:除根节点之外,所有节点的关键字个数是xx~xx,且每个结点内部关键字有序
    情况一:
    若插入导致关键字书超过上限:
    从中间位置分裂成两个部分,右边部分放在新节点中,左边部分放在源节点中,中点位置插入源节点的父节点;新元素一定是插入到最底层的终端节点,用查找来确定插入位置
    在这里插入图片描述
    在这里插入图片描述
    情况二:
    若导致父节点的关键字也超过上限:
    在这里插入图片描述
    在这里插入图片描述
  4. 删除:
    情况一:
    若被删除的关键字在终端节点:
    删除后关键字个数未低于下限,直接删除;
    低于下限:
    右兄弟够借,用当前节点的后继,后继的后继依次顶替空缺;
    左兄弟够借,用当前节点的前驱,前驱的前驱依次顶替空缺;
    左右兄弟都不够借,与父节点内的关键字+左兄弟或者右兄弟(所以会产生不同的B树)进行合并,(父节点也要下来当儿子),若导致父节点关键字低于下限,需要继续合并(父结点的父结点下来当儿子)。
    情况二:
    若删除的关键字在非终端节点:
    一定可以转化为终端结点删除;
    用直接前驱或者直接后继来替代被删除的关键字,随后删除这个直接前驱或者直接后继。

B+树

在这里插入图片描述

  1. 满足以下性质
    在这里插入图片描述
    在这里插入图片描述
目录
相关文章
|
1月前
|
存储 算法 搜索推荐
探索常见数据结构:数组、链表、栈、队列、树和图
探索常见数据结构:数组、链表、栈、队列、树和图
99 64
|
14天前
|
存储 搜索推荐 算法
【数据结构】树型结构详解 + 堆的实现(c语言)(附源码)
本文介绍了树和二叉树的基本概念及结构,重点讲解了堆这一重要的数据结构。堆是一种特殊的完全二叉树,常用于实现优先队列和高效的排序算法(如堆排序)。文章详细描述了堆的性质、存储方式及其实现方法,包括插入、删除和取堆顶数据等操作的具体实现。通过这些内容,读者可以全面了解堆的原理和应用。
57 16
|
1月前
|
存储 算法 关系型数据库
数据结构与算法学习二一:多路查找树、二叉树与B树、2-3树、B+树、B*树。(本章为了解基本知识即可,不做代码学习)
这篇文章主要介绍了多路查找树的基本概念,包括二叉树的局限性、多叉树的优化、B树及其变体(如2-3树、B+树、B*树)的特点和应用,旨在帮助读者理解这些数据结构在文件系统和数据库系统中的重要性和效率。
19 0
数据结构与算法学习二一:多路查找树、二叉树与B树、2-3树、B+树、B*树。(本章为了解基本知识即可,不做代码学习)
|
1月前
|
存储 编译器 C++
【初阶数据结构】掌握二叉树遍历技巧与信息求解:深入解析四种遍历方法及树的结构与统计分析
【初阶数据结构】掌握二叉树遍历技巧与信息求解:深入解析四种遍历方法及树的结构与统计分析
|
1月前
【高阶数据结构】二叉树进阶探秘:AVL树的平衡机制与实现详解(三)
【高阶数据结构】二叉树进阶探秘:AVL树的平衡机制与实现详解
|
1月前
【高阶数据结构】二叉树进阶探秘:AVL树的平衡机制与实现详解(二)
【高阶数据结构】二叉树进阶探秘:AVL树的平衡机制与实现详解
|
1月前
|
存储
【高阶数据结构】二叉树进阶探秘:AVL树的平衡机制与实现详解(一)
【高阶数据结构】二叉树进阶探秘:AVL树的平衡机制与实现详解
|
1月前
|
Java C++
【数据结构】探索红黑树的奥秘:自平衡原理图解及与二叉查找树的比较
本文深入解析红黑树的自平衡原理,介绍其五大原则,并通过图解和代码示例展示其内部机制。同时,对比红黑树与二叉查找树的性能差异,帮助读者更好地理解这两种数据结构的特点和应用场景。
28 0
|
2月前
|
JSON 前端开发 JavaScript
一文了解树在前端中的应用,掌握数据结构中树的生命线
该文章详细介绍了树这一数据结构在前端开发中的应用,包括树的基本概念、遍历方法(如深度优先遍历、广度优先遍历)以及二叉树的先序、中序、后序遍历,并通过实例代码展示了如何在JavaScript中实现这些遍历算法。此外,文章还探讨了树结构在处理JSON数据时的应用场景。
一文了解树在前端中的应用,掌握数据结构中树的生命线

热门文章

最新文章