红黑树

1、

  》》 说明:红黑树(red-black tree)是许多“平衡”搜索树中的一种, 可以保证在最坏情况下基本

         动态集合操作的时间复杂度为O( lg n)。

2、红黑树的性质

  》》 1)、红黑树是一种二叉搜索树,它在每个结点上增加一个存储位来表示结点的颜色,可以是 

           RED 或者 BLACK 。通过对任何一条从根到叶子的简单路径上各个结点的颜色进行约束,红黑

           树确保没有一条路径会比其他路径长出 2 倍,因而是近似于平衡的

  》》 2)、树中每个结点包含 5 个属性:color key  left  right  p  。如果一个结点没有子结点

           或者父结点,则该结点相应指针属性的值为 NIL 。

  》》 3)、一棵红黑树是满足下面“红黑性质”的二叉搜索树

                  性质1: 每个结点或是红色的,或是黑色的

                  性质2: 根节点是黑色的

                  性质3:每个叶结点(NIL)是黑色的

                  性质4: 如果一个结点是红色的,则它的两个子结点都是黑色的

                  性质5:对每个结点,从该结点到其所有后代叶结点的简单路径上,均包含相同数目的黑色结点

          补充:红黑树的案例

                   

   》》4)、哨兵 T.NIL (黑色的):

                    为了便于处理红黑树代码中的边界条件,使用一个“哨兵”来代表 NIL 。对于一棵红黑树 T ,

                哨兵 T.nil 是一个与树中普通结点有相同属性的对象。它的 color 属性为 BLACK ,而其他

                属性 left 、 right 、key 和 p 可以设为任意值。

 

                补充:使用一个哨兵 T.nil 来代表所有的 NIL (“ 所有的叶结点 ” 和 “ 根结点的父结点 ”),

                          哨兵的属性 p 、 left 、  right 、 key 的取值并不重要。

                  

   》》 5)、“ 黑高 ”的概念:

                   ## 从某个结点 x 出发(不包该结点)到达一个叶结点的任意一条简单路径上的黑色结点个数

                     称为该结点的“ 黑高 (black-height)” ,记为 bh(x) 。

                    ## 根据上面的性质 5 ,黑高的概念是明确定义的,因为从该结点出发的所有下降到其叶结点

                      的简单路径的黑结点的个数是相同的。于是定义红黑树的黑高为其根结点的黑高

   》》 引理: 一棵有 n 个内部节点的红黑树的高度至多为 2 lg( n + 1 )

 

3、旋转

    》》 1)、搜索树操作 Tree-Insert 和  Tree-delete 在含 n 个关键字的红黑树上,运行花费时间为

                   O( lg n ) 。由于这个两个操作对树进行了修改,结果可能违反了红黑树的性质。为了维护

                    这些性质,必须要改变树中某些结点的颜色以及指针结构。

     》》 2)、指针结构的改变是通过“ 旋转 (ratation)” 来完成的,这是一种能保持二叉搜索树性质的

                     的搜索树局部操作。

                        ## 两种旋转:“ 左旋 ” 和 “ 右旋 ”

                         

   4. 插入

     》》 1)、我们可以在  O( lg n ) 时间内完成向一棵含有 n 个结点的红黑树中插入一个新结点。

   5. 删除

      》》 1)、删除一个结点要花费的时间为 O( lg n )。

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小达人Fighting

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值