(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

有bug欢迎指出,转载请注明出处。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • B树的定义 一棵m阶的B树满足下列条件: 树中每个结点至多有m个孩子。 除根结点和叶子结点外,其它每个结点至少有m...
    文档随手记阅读 14,565评论 0 25
  • 一,分层架构: 用户操作: 数据层: 接口层: 路由层: 视图层: 二,项目目录结构 三,增删改查模块: 1.模块...
    _往后_阅读 1,241评论 0 1
  • :你上过大学,未必有文化 关于什么是文化,我最最欣赏的回答,是作家梁晓声的四句概括:根植于内心的修养;无需提醒的自...
    王木木4523阅读 3,616评论 5 9
  • 幸运的老师阅读 1,404评论 0 0
  • 汽车在高速公路上飞驰, 周围景色疯狂向后奔跑, 没有风,云也没有动, 现在正适合想念, 只是云在想风, 我在想你。
    一颗好好好树啊阅读 1,475评论 0 1