(23)Go实现红黑树-算法解析

红黑树,叫red black tree/2b tree,了解红黑树之前,先了解下2-3树,2-3树容易理解
且和红黑树有某种等价性,了解2-3树有助于了解红黑树 //


如以上图过程:  //
1)每次插入新节点时,都是先找到要插入的最后节点,与最后节点相融合;
2)融合后如果是3节点,则后续不变;
3)融合后如果是4节点,则分裂一棵子树,并将其父节点向上一级融合,直到根节点为止
2-3树和红黑树的等价性 

依照上图的性质,3节点采用的是左倾的3节点,这样建出来的红黑树称为左倾红黑树,据此也有
右倾红黑树,即b在上,c在b的右边,c是红色表示与父节点是同一个节点。//
2-3树和红黑树可以等价为下图:



如上图,好好理解,向红黑树中添加元素的情形跟2-3树中添加元素类似,都是通过融合、分裂;
//
向红黑树中融合元素可以分为以下2类,共5种情形:(默认添加红节点,表明该节点与父节点是融合的)
1.2节点中融合元素
情形1)融合的节点在2节点的左边;
情形2)融合的节点在2节点的右边;

2.3节点中融合元素
情形3)融合的元素在3节点的中间;
情形4)融合的元素在3节点的左边;
情形5)融合的元素在3节点的右边;

5种情形如下图演示:

依据上面5种情形,向红黑树中添加节点可以归纳为以下流程: //
最后的颜色翻转之后,新的红节点要再向上做判断,之后重复这个流程,直到根节点为止

续下一篇《(24)Go实现红黑树-实现和总结》:
https://www.jianshu.com/p/172c2717ae19

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值