数据结构与算法10の查找のB树(2-3树,2-3-4树)

1. 2-3树

1.1 概念

2-3树中每一个结点都具有两个孩子(2结点)或者三个孩子(三结点)

  1. 一个二结点有以下特性:
    • 包含一个元素
    • 同时有两个孩子或者没有孩子
  2. 一个三节点有以下特性:
    • 包含两个元素
    • 同时有三个孩子或者没有孩子

1.2 插入(创建)

这里举一个实例,从头来创建2-3:
7,1,2,5,6,9,8,4,37, 1,2, 5, 6, 9, 8, 4, 3
(1)插入717,1:
数据结构与算法10の查找のB树(2-3树,2-3-4树)
(2)插入2,此时【三结点1-7】已满,故结点2增加一层;为了保证二结点有两个孩子的条件,需要把【三节点1-7】拆开:
数据结构与算法10の查找のB树(2-3树,2-3-4树)
(3)插入5,叶子节点有空间,直接按大小顺序插入:
数据结构与算法10の查找のB树(2-3树,2-3-4树)
(4)插入6,此时【二节点2】有空间插入,变成【三结点2-6】
数据结构与算法10の查找のB树(2-3树,2-3-4树)
为了保证三结点有三个孩子,故把【三结点5-7】拆开:
数据结构与算法10の查找のB树(2-3树,2-3-4树)
(5)插入9:
数据结构与算法10の查找のB树(2-3树,2-3-4树)
(6)插入8,此时【三结点7-9】和【三结点2-6】均满,故需要增加层数:
数据结构与算法10の查找のB树(2-3树,2-3-4树)
为了保证二结点有两个孩子,将【三结点7-9】拆开:
数据结构与算法10の查找のB树(2-3树,2-3-4树)
为了保证两边层数的匹配,将【三结点2-6】拆开:
数据结构与算法10の查找のB树(2-3树,2-3-4树)
按大小顺序链接指针:
数据结构与算法10の查找のB树(2-3树,2-3-4树)
(7)插入4:
数据结构与算法10の查找のB树(2-3树,2-3-4树)
(8)插入3,此时【二节点2】有空间,那么为了三结点有三个孩子,需要把【三结点4-5】拆开:
数据结构与算法10の查找のB树(2-3树,2-3-4树)
按照大小顺序可知,【二节点4】应该上提,与【二节点2】组成三结点;然后按照大小顺序链接指针:
数据结构与算法10の查找のB树(2-3树,2-3-4树)
数据结构与算法10の查找のB树(2-3树,2-3-4树)

1.3 删除

假设删2,1,5,82,1,5,8
(1)删除2:
数据结构与算法10の查找のB树(2-3树,2-3-4树)
数据结构与算法10の查找のB树(2-3树,2-3-4树)
(2)删除1:
数据结构与算法10の查找のB树(2-3树,2-3-4树)

(3)删除5:
数据结构与算法10の查找のB树(2-3树,2-3-4树)

数据结构与算法10の查找のB树(2-3树,2-3-4树)
数据结构与算法10の查找のB树(2-3树,2-3-4树)
(4)删除8:
数据结构与算法10の查找のB树(2-3树,2-3-4树)

数据结构与算法10の查找のB树(2-3树,2-3-4树)

2. 2-3-4树

2.1 概念

2.2 插入(创建)

2.3删除

3. B树

以上2-3,2-3-4树是B树的特例,下面给出B树的概念,具体操作不再讲解;
数据结构与算法10の查找のB树(2-3树,2-3-4树)