码迷,mamicode.com
首页 > 其他好文 > 详细

2-3树

时间:2019-08-03 00:51:50      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:最好   底部   现实生活   规律   构造   导致   table   lock   时间复杂度   

2-3 Tree

2-3树是一种二叉查找树的推广,来提供更好的执行效果

结点

结点类型 键数目 孩子数目
2结点 1 2
3结点 2 3
  • 2结点图示
graph TD 1(B)---|小于B|2(A) 1---|大于B|3(C)
  • 3结点图示
graph TD 1(B D)---|小于B|2(A) 1---|介于B和D之间|4(C) 1---|大于B|3(E)

RULE

完美平衡 每条从根节点到空链接的路径有相同的长度
对称顺序 中序遍历得到升序序列

检索

  • 从一个2-3树中检索H
graph TD 1(M)---|<1> H小于M|2(E J) 1---3(R) 2---4(A C) 2---|<2> H介于E和J之间 OK|5(H) 2---0(L) 3---8(P) 3---9(S X)

插入

插入键落在底部2结点上

  • 往一个2-3树中插入K
    1. 检索K
graph TD 1(M)---|<1> K小于M|2(E J) 1---3(R) 2---4(A C) 2---5(H) 2---|<2> K大于J|0(L) 3---8(P) 3---9(S X)
  1. 将2结点变为3结点
graph TD 1(M)---2(E J) 1---3(R) 2---4(A C) 2---5(H) 2---0(K L) 3---8(P) 3---9(S X)

插入键落在底部3结点上

  • 往一个2-3树中插入Z
    1. 检索K
graph TD 1(M)---2(E J) 1---|<1> Z大于M|3(R) 2---4(A C) 2---5(H) 2---0(L) 3---8(P) 3---|<2> Z大于R|9(S X)
  1. 将3结点变为4结点(按规律来说就是有三个键,四个儿子的结点)
graph TD 1(M)---2(E J) 1---3(R) 2---4(A C) 2---5(H) 2---0(K L) 3---8(P) 3---9(S X Z)
  1. 将4结点分解为两个2结点,同时将中间的键传递给父结点
graph TD 1(M)---2(E J) 1---3(R X) 2---4(A C) 2---5(H) 2---0(K L) 3---8(P) 3---9(S) 3---10(Z)
  1. 检查父节点是否符合2或3结点,如果父结点变为4结点则对父结点执行第三部操作,一直往上检查直到树中不存在4结点

构造2-3树

  1. 空树
  2. 插入第一个键时构造一个2结点放入其中
  3. 插入第二个键时放入之前的2结点
  4. 插入后续的键时执行插入操作

案例

  1. 空树

    graph TD 1(EMPTY)
  2. 插入S(构建一个2结点)

    graph TD 1(S)
  3. 插入E(将2结点换为3结点)

    graph TD 1(E S)
  4. 插入A(将3结点换为4结点)

    graph TD 1(A E S)

    (将4结点换为两个二节点,同时将中间的键传递给父结点)

    graph TD 1(E)---2(A) 1---3(S)
  5. 插入D

    graph TD 1(E)---2(A D) 1---3(S)
  6. 插入C

    graph TD 1(E)---2(A C D) 1---3(S)
    graph TD 1(C E)---2(A) 1---4(D) 1---3(S)
  7. 插入U

    graph TD 1(C E)---2(A) 1---4(D) 1---3(S U)
  8. 插入T

    graph TD 1(C E)---2(A) 1---4(D) 1---3(S T U)
    graph TD 1(C E T)---2(A) 1---4(D) 1---3(S) 1---5(U)
    graph TD 8(E)---1 8---7(T) 1(C)---2(A) 1---4(D) 7---3(S) 7---5(U)

分析

2-3树相较于二叉查找树有很高的效率提升,这是因为二叉查找树对于树的平衡度没有调整,而现实生活中的数据往往是有规律的而非随机的,二叉查找树得到的往往是一颗偏斜的树,导致效率低下

情形 描述 时间复杂度
最坏情形 全是2结点 lgN
最好情形 全是2结点 lg3N
树高度 存储结点
12~20 百万级别
18~30 十亿级别

2-3树

标签:最好   底部   现实生活   规律   构造   导致   table   lock   时间复杂度   

原文地址:https://www.cnblogs.com/redo19990701/p/11291722.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!