二三查找树的定义、查找、插入以及性质

  • 二三查找树的来源

二三查找树弥补了二叉查找树的缺点。

二叉查找树满足"左子节点小于父节点,右子节点小于父节点",如果我们以 9,8,7,6,5,4,3,2,1 的顺序插入一个二叉排序数,那么就会得到一个最坏的情况。如果我要查找 1 呢?岂不是很费时间??我们有没有办法去平衡这个二叉树?

为了平衡这个二叉树,就诞生了二三查找树

 

  • 二三查找树的定义

(1)如图所示,绿色的节点叫"2-节点",红色的叫"3-节点"

(2)2-节点只能有2个子节点,3-节点只能有3个子节点

(3)2-节点必须满足左子节点的值比自己小,右子节点的值比自己大

(4)3-节点必须满足左子节点比自身最小的那个数还要小,中间子节点的值居于自身的小数和大数之间,右子节点比自身的大数还要大

 

  • 二三查找树查找过程

以上图为例子,查找33这个元素

(1)33比49小,往左子数找

(2)33居于32和36之间,往中间子数找

(3)找到33了

 

  • 二三查找树的插入过程

插入情况1:向2-节点中插入新建

例如插入一个37

(1)37比根节点49小,往左子数走

(2)37比大数36还要大,往右子树走

(3)37比40要小,此时,为了尽量不增加树的深度,所以把37插入到40的左边形成一个3-节点

结果如下图

 

插入情况2:向一颗含有一个3-节点的树中插入新建

有一颗树的初始状态如下图,我们要插入21

插入情况3:向一个父节点为2-节点的3-节点中插入新建

在这个树的基础上,插入67

 

插入情况4:向一个父节点为3-节点的3-节点中插入新建

以此树为基准,插入18

 

插入18完成

 

  • 二三查找树的性质

通过对2-3树插入操作的分析,我们发现在插入操作的分析,我们发现在插入的时候,2-3树需要做一些局部的变量来保持2-3树平衡。

一棵完全平衡的2-3树具有以下性质:

(1)任意空链接到根节点的路劲长度都是相等的

(2)4-节点变换为3-节点时,树的高度不会发生变化,只有当根节点时临时的4-节点,分解节点时,树的高度+1

(3)2-3树与普通查找树最大的区别在于,普通查找树时自顶向下生长,而2-3树时自底向上生长的。

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值