2-3 Tree
2-3树是一种二叉查找树的推广,来提供更好的执行效果
结点
结点类型 | 键数目 | 孩子数目 |
---|---|---|
2结点 | 1 | 2 |
3结点 | 2 | 3 |
- 2结点图示
- 3结点图示
RULE
完美平衡 | 每条从根节点到空链接的路径有相同的长度 |
---|---|
对称顺序 | 中序遍历得到升序序列 |
检索
- 从一个2-3树中检索H
插入
插入键落在底部2结点上
- 往一个2-3树中插入K
- 检索K
- 将2结点变为3结点
插入键落在底部3结点上
- 往一个2-3树中插入Z
- 检索K
- 将3结点变为4结点(按规律来说就是有三个键,四个儿子的结点)
- 将4结点分解为两个2结点,同时将中间的键传递给父结点
- 检查父节点是否符合2或3结点,如果父结点变为4结点则对父结点执行第三部操作,一直往上检查直到树中不存在4结点
构造2-3树
- 空树
- 插入第一个键时构造一个2结点放入其中
- 插入第二个键时放入之前的2结点
- 插入后续的键时执行插入操作
案例
空树
graph TD 1(EMPTY)插入S(构建一个2结点)
graph TD 1(S)插入E(将2结点换为3结点)
graph TD 1(E S)插入A(将3结点换为4结点)
graph TD 1(A E S)(将4结点换为两个二节点,同时将中间的键传递给父结点)
graph TD 1(E)---2(A) 1---3(S)插入D
graph TD 1(E)---2(A D) 1---3(S)插入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)插入U
graph TD 1(C E)---2(A) 1---4(D) 1---3(S U)插入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 | 十亿级别 |
标签:,结点,graph,二叉,插入,TD,树中 来源: https://www.cnblogs.com/redo19990701/p/11291722.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。