数据结构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. 满足以下性质
    在这里插入图片描述
    在这里插入图片描述
目录
相关文章
|
2月前
|
存储 算法 Linux
【数据结构和算法】---二叉树(1)--树概念及结构
【数据结构和算法】---二叉树(1)--树概念及结构
28 0
|
6天前
|
存储 算法 Linux
【数据结构】树、二叉树与堆(长期维护)(1)
【数据结构】树、二叉树与堆(长期维护)(1)
|
6天前
|
算法
【数据结构】树、二叉树与堆(长期维护)(2)
【数据结构】树、二叉树与堆(长期维护)(2)
【数据结构】树、二叉树与堆(长期维护)(2)
|
1月前
|
存储
【数据结构】树和二叉树的概念及结构
数据结构——树和二叉树的概念及结构
48 3
【数据结构】树和二叉树的概念及结构
|
4天前
|
存储 缓存 算法
深入解析B树:数据结构、存储结构与算法优势
深入解析B树:数据结构、存储结构与算法优势
|
7天前
|
C++ 容器
【数据结构】AVL树
【数据结构】AVL树
|
1月前
|
存储 算法 Python
Python数据结构新视角:Trie树与Suffix Tree的相爱相杀,你站哪边?
【7月更文挑战第20天】在编程领域,Trie树(前缀树)与Suffix Tree(后缀树)犹如双星,各有专长。Trie树高效检索字符串集合,擅长前缀匹配,适用于自动补全和拼写检查;Suffix Tree则管理字符串所有后缀,加速子串查询,解最长公共前缀和重复子串难题。两者在不同场景发光发热,Trie树于快速响应的自动完成胜出,Suffix Tree则在基因序列分析和文本模式识别中独领风骚。抉择之间,应用场景与需求成关键,恰如剑客选剑,唯理解本质方能制胜。
18 1
|
1月前
|
存储 关系型数据库 数据库
数据结构之B树
数据结构之B树
|
1月前
|
存储 数据处理 开发者
告别繁琐查找!Python高级数据结构Trie树与Suffix Tree,让数据处理更轻松!
【7月更文挑战第19天】Python的Trie树优化字符串搜索,利用前缀减少无效操作,提升效率;Suffix Tree则高效处理后缀问题,尤其适用于文本搜索与生物信息学。虽构建复杂,但能加速后缀查询。掌握这两种数据结构,能有效应对大规模数据挑战,简化处理流程,提升开发效率。
40 0
|
2月前
|
存储 算法
【树】数据结构——树和二叉树的概念&笔记
【树】数据结构——树和二叉树的概念&笔记