当前位置: 首页 > article >正文

数据结构:B树与B+树

工具

数据结构与算法可视化在线演示

m阶 B树有以下特点:

B-树,有时又写为B_树(其中的-或者_只是连字符,并不读作 B减树),一颗 m 阶(或度)的 B-树,或者本身是空树,否则必须满足以下特性:

  1. 结点点数量要求:除根结点之外,所有非叶子结点的子树数在[2,m]区间,即:

    1. 树中每个结点至多有 m 棵子树;
    2. 若根结点不是叶子结点,则至少有两棵子树;
  2. 结点半满要求:除根之外的所有非叶子结点至少有 ⌈m/2⌉ 棵子树,要求结点半满,保证B树不会退化成简单地二叉树

  3. 结点中关键字数要求:有n个子结点的非叶子结点恰好包含有n-1个关键字,(数量关系犹如一个西瓜切两半,只需要关键的一刀 ,一分为二),取值范围是:⌈m/2⌉-1≤ n ≤m-1

数据项 P 0 P_0 P0 K 1 K_1 K1 P 1 P_1 P1 K 2 K_2 K2 P 2 P_2 P2 K n K_n Kn P n P_n Pn
描述指针关键字 1指针关键字 2指针关键字 n指针

P 0 P_0 P0 K 1 K_1 K1 P 1 P_1 P1 K 2 K_2 K2 P 2 P_2 P2,…, P n P_n Pn K n K_n Kn

  • K i K_i Ki (i 从 1 到 n)为关键字,且 K i K_i Ki < K i + 1 K_{i+1} Ki+1
  • P i P_i Pi 代表指向子树根结点的指针,且:
    • 指针 P i − 1 P_{i-1} Pi1 所指的子树中所有结点的关键字都小于 K i K_i Ki
    • P n P_n Pn 所指子树中所有的结点的关键字都大于 K n K_n Kn

在这里插入图片描述

B+树的特点

m阶 B+树有以下特点(基于 B 树的改版):

  1. 所有的叶子结点中包含了全部关键字的信息,及指向含这些关键字记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。
  2. 所有的叶子结点在相同的深度上,时间复杂度 O ( l o g n ) O(log^n) O(logn)
  3. 数据项存储在树叶上,也就是存储在叶子结点上。
  4. 非叶子结点存储直到 m-1 个关键字以指示搜索的方向,且关键字 K i K_i Ki < K i + 1 K_{i+1} Ki+1

在这里插入图片描述


http://www.kler.cn/a/446826.html

相关文章:

  • Android Compose list 下拉刷新、上拉加载更多
  • UDP系统控制器_音量控制、电脑关机、文件打开、PPT演示、任务栏自动隐藏
  • VS Code Copilot 与 Cursor 对比
  • SQL语句自动加上了LIMIT 10,导致报错
  • 详细解读TISAX认证的意义
  • EasyGBS国标GB28181平台P2P远程访问故障排查指南:客户端角度的排查思路
  • React 事件机制和原生 DOM 事件流有什么区别
  • 源码编译llama.cpp for android
  • linux下网络编程socketselectepoll的底层实现原理
  • js常用方法之: 预览大图(uniapp原生方法封装)
  • 机器学习《西瓜书》学习笔记《待续》
  • git分支管理及策略
  • HIPT论文阅读
  • Java 优化springboot jar 内存 年轻代和老年代的比例 减少垃圾清理耗时 如调整 -XX:NewRatio
  • 使用ResNet18进行猫狗分类(原始数据处理+训练流程)
  • Android Overlay Priority Rules
  • Oracle 数据库函数的用法(一)
  • Java-30 深入浅出 Spring - IoC 基础 启动IoC 纯XML启动 Bean、DI注入
  • [react]5、React脚手架
  • 【Linux】文件IO--open/close/文件描述符(详)
  • 【技术干货】移动SDK安全风险及应对策略
  • 【WPS安装】WPS编译错误总结:WPS编译失败+仅编译成功ungrib等
  • 在 Ubuntu 下通过 Docker 部署 MariaDB 服务器
  • 2024.12.18 周三
  • 对 MYSQL 架构的了解
  • PySide6如何使用自定义委托实现在TableWidget填充颜色