对2-3-4树的简单想法

2-3树插入时,我们首先从根节点开始,从上到下找到待插入的叶节点;

然后再从叶节点开始从下到上,执行插入操作。

而2-3-4树插入时,同样首先我们也从根节点开始,从上到下找待插入的叶节点但是与2-3树插入不同的是,在这个寻找过程中遇到4-node,我们就把可以把4-node分裂成2个2-node,重新链接到其父节点。这个操作不会改变2-3-4树的任何性质。最后找到待插入的叶节点时,这个叶节点一定不是4-node,就可以直接把需要插入的关键字填入到这个叶节点中,不再需要从下到上的操作了。

原来以为2-3-4树会更复杂的,原来比2-3树要简单。真的有意思,复杂和简单都是你意想不到的。开始想着是不是可以用2-3-4树插入的方法来进行2-3树的插入,考虑了一下,发现是不可以的.一个3-node不能分裂出两个2-node。而一个4-node很容易分裂两个2-node,同时把中间的关键字放到父节点中。如果这个4-node是根节点,就生成一个新的父节点。例如下面的一个4-node节点:


分裂后就可以得到新的树:

展开想一下,如果树是2-3-…-2n+1(n=1,2,3….),在进行插入时就要采用类似2-3树插入的操作;而如果树是2-3-…-2n+2(n=1,2,3,…),在进行插入时就可以采用类似2-3-4树的插入操作。

普通二叉搜素树到2-3-4树: 普通二叉搜索树每个节点只包含一个关键字,而2-3-4树则突破每个节点只有一个关键字的限制,像普通树一样,每个节点可以容纳多个关键字。如果一个节点只能容纳一个关键字,则二叉搜索树不能平衡。比如有四个关键字A,D,E,H。这四个关键字是不能形成左右子树高度一致的二叉树,所以需要扩充每个节点所能容纳的关键字的个数。这样就可以形成下面的平衡树。

 

或者


但是2-3-4树的插入和删除操作相对复杂,于是又将2-3-4树作等价变换,得到红黑树,一种特殊类型的二叉搜索树。在红黑树上进行插入和删除又变的简单,而同时搜素的效率又高,搜索的时间复杂度还是O(logn).

为了保持平衡,我们增加节点容纳关键字的数目,从普通二叉树进化到2-3-4树;为了简化插入和删除操作,又将2-3-4树退化到红黑树—一种特殊的二叉搜索树。想想这种思维的变化,很有意思。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值