平衡查找树之2-3查找树
来源:互联网 发布:淘宝生鲜都发空运吗 编辑:程序博客网 时间:2024/06/16 16:45
二叉查找树不能保证树的平衡性,在最坏情况下,查找插入操作需要线性时间。
为了保证查找树的平衡性,有了2-3树的概念。
它是实现红黑树的基础。
2-3树中有两种结点:
- 2-结点(标准二叉查找树中的结点)
- 3-结点(两个键和3个链接)3-结点中左键<中键<右键
当插入结点时,通过一些基本操作,可以保证这棵树是完美平衡的,因此查找和插入的时间会是对数级的。
插入过程有如下几种可能性:
向2-结点中插入新键
当查找结束于一个2-结点,直接将此2-结点变为3-结点,并将键保存在其中。向一棵只含有3-结点的树中插入新键
先将它变为一个4-结点,然后将中键变为左右键的父结点,这样就变为3个2-结点。向一个父节点为2-结点的3-结点中插入新键
还是先将3-结点变为4-结点,将中键移至父结点中,使父节点变为一个3-结点。- 向一个父节点为3-结点的3-结点中插入新键
类似上一种情况,只不过父结点变成了4-结点,将4-结点分解为2个2-结点,中键继续向上传递。
局部变换不会影响树的全局有序性和平衡性,这是理解这个算法的关键。
为什么不直接用代码实现2-3树呢?
因为要有下面这些操作:
- 维护两种不同的结点(2-结点和3-结点)。
- 要将被查找的键和结点中每个键进行比较(如果是3-结点的话)。
- 将链接和其他信息从一个结点复制到另一个结点(中键向上传递和分解结点时)
- 将结点从一种数据类型转换为另一种数据类型。(2-结点3-结点相互转换)
这些操作产生的额外开销可能使算法比标准二叉查找树更慢。
为此,我们用红黑树来实现。
阅读全文
1 0
- 平衡查找树之2-3查找树
- 平衡查找树之2-3树
- 平衡查找树之2-3树
- 平衡查找树之2-3树
- 平衡查找树之2-3树
- 平衡查找树之红黑树
- 平衡查找树之红黑树
- 平衡查找树之红黑树
- 查找之平衡二叉树
- 数据结构(7)平衡查找树之2-3树
- 二、平衡查找树之2-3树
- 浅析数据结构与算法8--平衡查找树之2-3查找树
- 平衡二叉查找树
- 平衡二叉查找树
- 二叉平衡查找树
- 平衡检索/查找树
- 二叉平衡查找树:
- 平衡二叉查找树
- C# Winform Chart控件使用
- 【集合类分析】LinkedHashMap
- Special equations ----(hdu4569)数学思维
- Spring MVC 学习手记(2)- @RequestMapping注解
- 编译安装mysql
- 平衡查找树之2-3查找树
- 467. Unique Substrings in Wraparound String
- 2017 ACM ICPC 西安邀请赛总结
- Horizontal and vertical center alignment
- python django环境变量配置
- 给Java新手的一些建议——Java知识点归纳(Java基础部分)
- Java循环中remove方法的使用
- 114. Flatten Binary Tree to Linked List
- 【Tomcat9源码分析】源码下载、编译与调试