码迷,mamicode.com
首页 > 其他好文 > 详细

(5) 红黑树

时间:2016-12-23 13:35:58      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:操作   art   通过   ack   nbsp   参考   破坏   不难   情况   

红黑树本身就是一颗二叉查找树, 因此红黑树的插入操作和二叉查找树的插入操作都是一样的,这个不难.但是红黑树插入节点完成后, 可能会破坏红黑树的特性, 为了保持红黑树的性质, 需要通过一系列操作来保持红黑树的性质.

既然说会破坏红黑树的性质, 那红黑树到底有什么性质呢? 红黑树有五个性质:

性质1. 节点是红色或黑色
性质2. 根是黑色
性质3. 所有叶子都是黑色(叶子是NIL节点)
性质4. 如果一个节点是红的,则它的两个儿子都是黑的
性质5. 从任一节点到其叶子的所有简单路径都包含相同数目的黑色节点。

 

刚才说节点插入后, 可能会破坏红黑树的上面的性质, 为了保持红黑树的性质, 就需要进行一系列的操作.所有的插入情况可以归纳成以下几种case:

  1.如果插入节点的父节点是黑色

    这种情况,不用调整树结构, 不会破坏红黑树性质

  2.插入节点的父节点是红色

      这种情况又需要分成一下几种case讨论:

      (1).叔叔节点是红色

        这种情况不需要对树结构进行改变,只需要改变某些节点的颜色, 就可保持红黑树的性质

      (2)叔叔节点是黑色

        这种情况还需要分:

  • 插入节点的父节点是左子树, 且插入节点是左节点
  • 插入节点的父节点是左子树, 且插入节点是右节点
  • 插入节点的父节点是右子树, 且插入节点是左节点
  • 插入节点的父节点是右子树, 且插入节点是右节点

  所有情况就是这些, 后面对这些情况一一进行分析.

 

参考链接:

http://dongxicheng.org/structure/red-black-tree/

http://blog.csdn.net/yangjun2/article/details/6542321

(5) 红黑树

标签:操作   art   通过   ack   nbsp   参考   破坏   不难   情况   

原文地址:http://www.cnblogs.com/NewMan13/p/6214225.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!