图文并茂详解B-树数据结构

在二叉搜索树,AVL树,红黑树等二叉树中,每个节点仅包含一个值(键),最多包含两个子节点。但是有一种特殊的二叉树,称为B-Tree,其中一个节点包含多个值(键)和两个以上的子代。B-Tree由Bayer和McCreight于1972年开发,名称为Height Balanced m-way Search Tree。后来它被命名为B树。

B树官方定义如下...

B-Tree is a self-balanced search tree in which every node contains multiple keys and has more than two children.
可以翻译成:B树是一种自平衡二叉树,其中的每个节点都包含多个key,并且有两个以上的子节点。
在此,节点中的键数和节点的子级数取决于B树的顺序。每个B树都有一个顺序

m阶B树具有以下属性...

· 属性#1-所有叶节点必须处于同一级别

· 属性#2-除root以外的所有节点都必须至少具有[m / 2] -1个key,并且最多具有m-1个key

· 属性#3-除根节点外的所有非叶节点(即所有内部节点)必须至少具有m / 2个子节点。

· 属性4-如果根节点是非叶节点,则它必须至少有2个子节点。

· 属性#5-具有n-1个key的非叶节点必须具有n个子节点数。

· 属性#6- 节点中的所有键值都必须按升序排列

例如,第4阶B树在一个节点中最多包含3个键值,并且在一个节点中最多包含4个子级。
图文并茂详解B-树数据结构_第1张图片

树上的操作

=========
在B树上执行以下操作...

  1. 搜索
  2. 插入
  3. 删除中

B树中的搜索操作

============
· 第1步-从用户那里读取搜索元素。

· 步骤2-将搜索元素与树中根节点的第一个键值进行比较。

· 步骤3-如果两者都匹配,则显示“找到给定的节点!!!” 并终止功能

· 步骤4-如果两者都不匹配,则检查搜索元素是否小于或大于该键值。

· 步骤5-如果搜索元素较小,则在左侧子节点树中继续搜索过程。

· 第6步-如果搜索元素较大,则将搜索元素与同一节点中的下一个键值进行比较,并重复第3、4、5和6步,直到找到确切匹配项,或者直到将搜索元素与中的最后一个键值进行比较为止叶节点。

· 步骤7-如果叶节点中的最后一个键值也不匹配,则显示“找不到元素”并终止功能。

B树中的插入操作

============
在B树中,必须仅在叶节点处添加新元素。这意味着,新的key-Value始终仅附加到叶节点。插入操作执行如下...

· 步骤1-检查树是否为空。

· 步骤2-如果tree为Empty,则创建一个具有新键值的新节点,并将其作为根节点插入树中。

· 步骤3-如果树不为空,则使用二进制搜索树逻辑找到将新键值添加到的合适的叶子节点。

· 步骤4-如果该叶节点的位置为空,请按照该节点内键值的升序将新键值添加到该叶节点。

· 步骤5-如果该叶节点已满,请通过向其父节点发送中间值来拆分该叶节点。重复相同的操作,直到将发送值固定到节点中为止。

· 步骤6-如果在根节点执行拆分,则中间值将成为树的新根节点,并且树的高度将增加一。

通过插入1到10之间的数字来构造3阶B树
图文并茂详解B-树数据结构_第2张图片

你可能感兴趣的:(后端)