平衡树:2-3查找树

平衡树

查找树相较于链表数组来说,查找效率很高,我们知道影响查找树效率的最大因素就是查找树的深度,最坏的情况就是所有的结点都在根结点的一侧就像下面这种情况在这里插入图片描述
平衡树思想就是为了优化树的查找,让根结点两侧结点数目“平衡”,来达到降低查找树高度的目的

2-3查找树

2-3查找树是一种平衡树的思想
我们将标准二叉查找树的结点称为2-结点(含有一个键和两条链),而现在我们引入3-结点,它含有两个键和三条链。每一条链就是一个分区

2-3查找树定义

一棵2-3查找树要么为空,要么满足满足下面两个要求:
2-结点:
含有一个键(及其对应的值)和两条链,左链接指向2-3树中的键都小于该结点,右链接指向的2-3树中的键都大
于该结点。
3-结点:
北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090
含有两个键(及其对应的值)和三条链,左链接指向的2-3树中的键都小于该结点,中链接指向的2-3树中的键都位于该结点的两个键之间,右链接指向的2-3树中的键都大于该结点。
在这里插入图片描述

2-3查找树平衡调整

破坏平衡性的操作无非就是插入和删除

2-3查找树的插入

与普通查找树在空连接种插入不同,2-3查找树是在空连接的父节点中插入。
根据父节点的情况可以分为一下几种情况
1.父节点是2-结点
如果是2-结点则向该2-结点中插入新键,将2-结点变成3-结点,没有增加树的高度所以无需调整

在这里插入图片描述
2.父节点是3-结点
如果是3-结点则向该3-结点中插入新键,将3-结点变成4-结点。在2-查找树中没有4-结点的定义,所以我们将4-结点拆分成两个2-结点
在这里插入图片描述
按照上图E结点会继续加入到它的父结点中,这样就又会产生判断,父节点是2-结点,父节点是3-结点:
如果是2-结点:变成3-结点
在这里插入图片描述
如果是3-结点
变成临时的4-结点,在分解成2个2-结点,产生的中间元素提升至父节点直到找到一个2-结点,将这个2-结点变成3-结点。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
分解根结点
如果直到找到根结点也没有找到2-结点,则将根节点变成临时4-结点,再分解成2个2-结点,中间结点成为新的跟结点
树的深度+1
在这里插入图片描述
在这里插入图片描述

2-3查找树的性质

1.2-3查找树是平衡树,从任意一个空连接到根结点的路径长度是相等的
2.4-结点变成两个2-结点时树的高度不会发生变化,只有当跟根结点时临时4-结点分裂成2个2-结点时树高才+1,这就极大的降低了树的高度,优化了查找
3.与普通的二叉查找树相比最大的区别是,2-3树是从下往上构造的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值