算法自学笔记:平衡查找树:2-3树

传统的二分查找树随机的插入与删除操作会逐渐使得树趋于不平衡,时间复杂度无法保证在对数级别。要保证各操作时间复杂度为O(logN),我们需要做的是让树完全平衡,即从根节点沿各路径到树底的高度一样。

平衡查找树这一章节分三个部分:2-3树,红黑查找树,B树

2-3查找树
在2-3查找树里,我们有两种类型的节点,一种是和普通二叉树一样的包含一个值,两个子节点的节点。另一种节点包含两个值,三个子节点。其中,一个子节点链接均小于两个值的值,一个子节点链接在两值之间的数值,一个子节点链接大于两值的数值。

搜索操作:
和二叉树搜索原理相同。遇到2节点时,如大于目标值则左移,小于目标值右移。遇到3节点,和两个值分别比较,两个值均大于目标值则左移,均小于目标值右移,一个大于目标值一个小于目标值则移到中间子节点。以此递归执行,直到到达树底或得到目标值。

插入操作:
首先按照和搜索操作一样的逻辑找到树中对应位置。如果对应一个2节点,将该值和原2节点值合并形成一个3节点。

如对应一个3节点,先把该值加入,形成一个临时的4节点,然后把4节点分裂。分裂即为把3个值中居中的值作为父节点,剩余两个值分别作为其左子节点与右子节点。
如图所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这种情况下,2-3树会保持完美平衡与对称:
2-3树插入操作只变动要接收插入值的对应节点,其他节点不会收到影响。因此,只要每一步插入操作可以保证维持完美平衡且对称,那么在任何情况下2-3树就都可以实现完美平衡和对称
在这里插入图片描述
上图为2-3树插入操作所有可能的情况,在每一个情况下,2-3树都保持着完全平衡,不会出现不对称的部分

由于这一性质,二叉树搜索及插入操作时间复杂度为:O(log2(N))上限:所有节点为2节点,Ω(log3(N))下限:所有节点为3节点
在这一对数级别时间复杂度下,搜索上百万,甚至上亿的数据只需要至多几十次操作。

不过,在课程中,我们不会真正实现2-3树,因为其跟踪节点,变换2节点与3节点,分裂节点各个情况太过复杂。有一种更简单的平衡查找树实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值