红黑树

2-3-4 树是 红黑树 的一种等同,这意味着它们是等价的 数据结构

关于2-3-4树,百度百科:

http://baike.baidu.com/link?url=gHapyBG13vm25lZu41bq-L6941aGUPySt1DFImzJI_VkQ60wYD2r7zmGrjcV_rWs1bnHS8FsYEcq_FhIU_XMw_

这里主要记录自己所学的红黑树知识,教材是数据结构c++语言描述stl第2版。


红黑树它的每个结点都有颜色属性红或者黑,是2-3-4树的变形,使用不同颜色组合来描述3结点,4结点,利用改变颜色和旋转的方法来调整树的结构。

红黑树与2-3-4树结点对应关系:

2结点,普通的红黑树结点

4结点 (包含数值 A B C) 对应红黑树把中间B最为黑结点,A C作为B的左右结点,颜色为红。

3结点(A B) 则有2中可能

1)  A为黑结点,B为红右结点

2)  B为黑父结点,A为红左子结点

在红黑树中,通过颜色组合确定对应的2-3-4结点,如某个颜色组包含1黑父,2红子,则对应4结点。 包含1个黑父结点,1个红子结点则对应3结点。


红黑树重要性质:

1 根节点是黑色的。

2 红父结点一定没有红子结点,永远不会有两个红色结点直接相连。

3 从根节点到叶子的路径上,都有相同数量的黑结点,叫做黑色深度,体现红黑树的平衡性。


添加结点:

维护黑色深度平衡

规则如下:

1 维护根节点为黑色

2 新元素总是做为红结点插入到树中 

3  如果造成2个红结点直接相连,都要在平衡树结构时进行旋转(单左旋转,双左旋转,单右旋转,双右旋转)

4 当向下遍历一个路径时,拆分任何4结点(黑父和2红结点)


拆分4结点,拆分是把黑结点上移一层,有4种情况:

颜色翻转拆分

当4-结点的父节点是黑色的时候,只用颜色翻转来拆分结点就够了。






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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值