数据结构与算法(六)2-3-4树与2-3树

1、2-3-4树

在二叉树中,每个节点有一个数据项,最多有两个子节点。如果允许每个节点可以有更多的数据项和更多的子节点,就是多叉树(multiway tree)。

2-3-4树就是一种阶为4的多叉树,它像红黑树一样是平衡树,可以保证在O(lgn)的时间内完成查找、插入和删除操作,容易实现,但是效率比红黑树稍差。

下图展示了一颗2-3-4树:

在这里插入图片描述

1.png
它有如下特点:

每个节点可以保存一个、两个或者三个数据项。
底层的六个节点都是叶节点,所有的叶节点都是在一层上的
非叶子节点的子节点总数总是比它含有的数据项大1
2-3-4树中的2、3、4的含义指的是一个节点可能含有的子节点数。对非子叶节点有三种可能的情况:

有一个数据项的节点总是有两个子节点
有两个数据项的节点总是有三个子节点
有三个数据项的节点重是有四个子节点
上述的重要的关系决定了2-3-4树的结构,比较而言,叶节点没有子节点,然而它可能还有一个、两个、三个数据项,而空节点是不会存在的。在2-3-4树中不允许只有一个链接。有一个数据项的节点必须总是保持两个连接,除非它是叶节点,在那种情况下没有连接。

如下图所示,有两个链接的节点被称为2-节点,有三个链接的节点被称为3-节点,有四个链接的节点被称为4-节点。
在这里插入图片描述
树结构中很重要的一点就是它的链接与自己数据项的关键字之间的关系。二叉树中,所有关键字比某个节点值小的节点都在左子树中,所有关键字比某个值大的节点都在右子树,2-3-4树的规则与之类似
在这里插入图片描述

1.1 插入

如果2-3-4树中已存在当前插入的key,则插入失败,否则最终一定是在叶子节点中进行插入操作
如果待插入的节点不是4-节点,那么直接在该节点插入
如果待插入的节点是个4-节点,那么应该先分裂该节点然后再插入。一个4-节点可以分裂成一个根节点和两个子节点(这三个节点各含一个key)然后在子节点中插入,我们把分裂形成的根节点中的key看成向上层插入的key,然后重复第2步和第3步。
如果是在4-节点中进行插入,每次插入会多出一个分支,如果插入操作导致根节点分裂,则2-3-4树会生长一层。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值