平衡树: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树是从下往上构造的

相关推荐
©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页