B树

article/2025/9/9 0:03:15

B树的定义
flyfish 2015-7-15

B-树即为B树。因为B树的原英文名称为B-tree,因为翻译的不统一所以B树和B-树都是B-tree。

B树定义 引用自严蔚敏《数据结构》(C语言版)
B树是一种平衡的多路查找树
定义:一棵m 阶的B树,或者为空树,或为满足下列特性的m 叉树:
1 树中每个结点至多有m 棵子树;
2 若根结点不是叶子结点,则至少有两棵子树;
3 除根结点之外的所有非终端结点至少有 m/2 棵子树;
4 所有的非终端结点中包含以下信息数据:
(n, A0 K1 A1 K2 A2 ,…, Kn An
其中: Ki (i=1,…,n)为关键字,且 Ki < Ki + 1
Ai (i=0,…,n)为指向子树根结点的指针,且指针 Ai 1 所指子树中所有结点的关键字均小于 Ki (i=1,…,n),
An 所指子树中所有结点的关键字均大于 Kn .
n( m/21 n m1 )为关键字的个数(或者n+1为子树的个数)。
5 所有的叶子结点都出现在同一层次上,并且不带信息(可以看作是外部结点或查找失败的结点,实际上这些结点不存在,指向这些结点的指针为空)。

结点最大的孩子数目称为B树的阶(order)

B树定义 引用自 Donald Knuth的《The Art of Computer programming》

A B-tree of order m is a tree that satisfies the following properties:
1 Every node has at most m children.
2 Every node, except for the root and the leaves, has at least m/2 children,
3 The root has at least 2 children (unless it is a leaf),
4 All leaves appear on the same level, and carry no information.
5 A nonleaf node with k children contains k - 1 keys.
翻译
1 树中每个结点至多有m个孩子;
2 除根结点和叶子结点外,其它每个结点至少有m/2个孩子;
3 若根结点不是叶子结点,则至少有2个孩子;
4 所有叶子结点都出现在同一层,叶子结点不包含任何关键字信息;
5 有k个孩子的非终端结点包含k-1个关键字。

向下取整floor,用数学符号 表示
向上取整ceil,用数学符号 表示
floor(7.5) = 7
floor(-7.5) = -8
ceil(7.5) = 8
ceil(-7.5) = -7

B树示意图
绿色:关键字个数
红色:指针
蓝色:关键字
关键字从1到9的B树
这里写图片描述

问题:
对于n个关键字的m阶B树,最坏情况需要查找几次?

同样的问题不同的问法
含n个关键字的m阶B树的最大深度是多少?

深度为h+1的m阶B树所具有的最少结点数是
第一层至少1个节点
第二层至少2个节点

除根节点外每个分支节点至少有m/2棵子树
所以层数与每层至少结点数的关系如下
1 = 1
2 = 2
3 = 2 × m/2
4 = 2 × ( m/2 ) 2
5 = 2 × ( m/2 ) 3
6 = 2 × ( m/2 ) 4
7 = 2 × ( m/2 ) 5

h = 2 × ( m/2 ) h2
h+1 = 2 × ( m/2 ) h1

h+1层的节点就是叶子节点。若m阶B树有n个关键字,则叶子节点即查找不成功的节点为n+1

推导
n+1 2×(m/2)h1

2 × ( m/2 ) h1 n+1

( m/2 ) h1 n+12

h-1 logm/2(n+12)

h logm/2(n+12) +1

所以 含n个关键字的m阶B树的最大深度是
logm/2(n+12) +1

读作 以 m/2 为底 (n+12) 的对数 加1

Degree为3,关键码从1到9的B树示意图
绿色:关键字个数
红色:指针
蓝色:关键字

这里写图片描述


http://chatgpt.dhexx.cn/article/qg5VABlI.shtml

相关文章

B树详解

B树 B树&#xff0c;一般都被叫做B-树。 定义 B树中的每个节点的元素和子树数量是有限的&#xff0c;除了根节点外&#xff0c;所有节点最多拥有M-1个元素&#xff0c;所有非叶子非根节点最多拥有M个子树,即为M阶树。根节点至少拥有两个子树&#xff0c;除了根节点之后的非叶…

MySQL索引底层实现原理(B树和B+树)

文章目录 一、B-树索引1. 理论部分2. B树黄色的data表示key索引所在的这一行的数据&#xff0c;data存储的是数据本身内容&#xff0c;还是数据在磁盘上的地址&#xff1f;关于操作系统从磁盘读取索引文件到内存中的几个问题B树的缺点 三、B树B树特点MySQL最终为什么要采用B树存…

B树概念和插入实现

目录 前言 一.B树概念 1.1 概念和性质 1.2 分裂 二.插入的实现 三.性能分析 四.B树的删除 五.B树的优化B树和B*树 5.1 B树 5.2 B*树 六.B树的应用 6.1 MyISAM中的索引 6.2 Innodb引擎 前言 之前我们学了有很多数据结构&#xff0c;比如顺序表&#xff0c;链表&#xff0c;…

MySQL索引(B树、B+树)

目录 简介索引结构&#xff08;树&#xff09;为什么用树&#xff0c;而不用哈希表BTree索引BTree索引聚簇索引与非聚簇索引 索引分类性能分析索引创建场景 简介 MySQL官方对索引的定义为&#xff1a;索引&#xff08;Index&#xff09;是帮助MySQL高效获取数据的数据结构。可…

MySQL B+树相对于B树的区别及优势:

部分参考&#xff1a;B树和B树的区别 MySQL为什么使用树结构&#xff1f; 文件很大&#xff0c;不可能全部存储在内存中&#xff0c;故要存储到磁盘上索引的结构组织要尽量减少查找过程中磁盘I/O的存取次数&#xff08;为什么使用B-/Tree&#xff0c;还跟磁盘存取原理有关&am…

B树索引

B-Tree索引是最常见的索引结构&#xff0c;如oracle和mongodb的索引都是B-Tree&#xff0c;而mysql的索引类型是BTree 一、B树索引的结构 B-树索引是基于二叉树结构的。B-树索引结构有3个基本组成部分&#xff1a;根节点、分支节点和叶子节点。其中根节点位于索引结构的最顶端…

什么是B树

1.什么是B树 B树又称为多路平衡查找树&#xff0c;B树中所有结点的孩子节点数的最大值称为B树的阶&#xff0c;通常用m表示。 2.B树的特性 一颗m阶B树或为空树&#xff0c;或为满足如下特性的m叉树&#xff1a; 1&#xff09;树中每个结点至多有M棵子树&#xff08;即至多含有…

图解B树构建过程

1.B树结构同时满足以下特性 每个节点最多包含n个孩子&#xff0c;即n叉树&#xff1b;除了根节点和叶子节点外&#xff0c;每个节点至少有ceil(n/2)个孩子&#xff08;ceil是向上取整&#xff09;&#xff1b;若根节点不是叶子节点&#xff0c;则至少有两个孩子&#xff1b;所…

了解B树的删除

文章目录 1. 删除操作第一种情况第二种情况第三种情况 2. C示例3. 删除复杂度参考文档 在本教程中&#xff0c;您将学习如何从B树中删除键。此外&#xff0c;您还可以找到C语言的示例。     删除B树上的元素包括三个主要事件&#xff1a;搜索要删除的键所在的节点、删除键和…

B树的插入、删除操作

一、简介 B树是什么&#xff1f; 1970年&#xff0c;R.Bayer和E.mccreight提出了一种适用于外查找的树&#xff0c;它是一种平衡的多叉树&#xff0c;称为B树&#xff08;或B-树、B_树&#xff09;。 一棵m阶B树(balanced tree of order m)是一棵平衡的m路搜索树。它或者是空树…

数据结构-B树删除示例

数据结构学习-B树删除示例 1、B树简介2、在线可视化生成B树工具3、B树删除规则4、B树删除示例4.1、删除非根结点示例4.2、删除根结点示例 1、B树简介 1970年&#xff0c;R.Bayer和E.mccreight提出了一种适用于外查找的树&#xff0c;它是一种平衡的多叉树&#xff0c;称为B树&a…

B树-多路平衡查找树

B树 B树一个m阶B树的具有的特征&#xff08;或必须满足的条件&#xff09;B树的查找B树插入元素(一定是在叶子节点插入)1.插入后&#xff0c;没有破坏B树的规则2.插入后&#xff0c;叶子节点元素超过m-1个 B树删除元素1.删除叶子节点上的元素&#xff0c;没有破坏规则2.删除叶子…

B树、B+树详解

B-树&#xff0c;即为B树。因为B树的原英文名称为B-tree&#xff0c;目前理解B的意思为平衡。 概念 首先&#xff0c;B树不要和二叉树混淆&#xff0c;在计算机科学中&#xff0c;B树是一种自平衡树数据结构&#xff0c;它维护有序数据并允许以对数时间进行搜索&#xff0c;顺…

【B树及B树的基本操作】

文章目录 1.B树的定义和特性2.B树的性质3.B树创建的过程。4.B树的删除5.总结 1.B树的定义和特性 B树是一种平衡的多路查找树。 一棵m阶的B树&#xff08;B树中所有结点的孩子个数的最大值为m)&#xff0c;或为空树&#xff0c;或为满足下列特性的m叉树&#xff1a; (1) 树中每…

B树和B+树的区别

文章目录 简述写在前面1、B树2、B树 深入浅出B树B树深入B-树的查找 B 树B树概述 B-树和B树的区别拓展&#xff1a;MySQL为什么使用B-Tree&#xff08;BTree&#xff09;&& 存储知识存储数据最小单元主存存取原理磁盘存取原理 总结 简述 写在前面 大家在面试的时候&am…

B树(B-树)详解

B-树&#xff0c;即为B树。因为B树的原英文名称为B-tree&#xff0c;而国内很多人喜欢把B-tree译作B-树&#xff0c;B-tree就是指的B树。 B-树容易让人误解,建议大家用B树称呼, 本文以下直称B树 这篇介绍概念, 优点应用等, B树的描述和增删改查请到隔壁我写的另一篇(篇幅较长…

数据结构 —— B树

文章目录 1、B树的定义1.1、B树的特性1.2、B树的高度1.3、性能分析1.4、B树的补充说明1.5 、B树、B-树 、B-tree、B tree的区别 2、B树的插入操作以5阶B树为例&#xff0c;介绍B树的插入操作&#xff0c; 3、 B树的删除操作以5阶B树为例&#xff0c;介绍B树的删除操作 4、B树相…

B树和B+树详解

B树、B树看这一篇就够了 [TOC](B树、B树看这一篇就够了) 引言B树什么是B树以及B树是怎么来的B树的基本性质B树的新增和删除B树的插入B树的删除 B树什么是B树以及为什么要有B树B树的基本性质B树的查找 B树与B树的比较B树的优势B树的优势两者的细节对比 B树与B树在实际代码中的应…

B-树(B树)详解

https://www.jianshu.com/p/7dedb7ebe033 具体讲解之前&#xff0c;有一点&#xff0c;再次强调下&#xff1a;B-树&#xff0c;即为B树。因为B树的原英文名称为B-tree&#xff0c;而国内很多人喜欢把B-tree译作B-树&#xff0c;其实&#xff0c;这是个非常不好的直译&#xf…

B树和B+树

目录 一、BST树到AVL树到B树的简介 1.1 BST树 --- 二叉排序树 1.2 AVL树 --- 平衡二叉树 1.3 B树 --- 平衡多路查找树 1.3.1 B树的查找结点过程 1.3.2 B树的添加结点过程&#xff08;和结点分裂过程&#xff09; 1.3.3 B树的删除结点过程 二、B树 2.1 B树和B树 一…