红黑树
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了 红黑树相关的知识,希望对你有一定的参考价值。
红黑树本身就是一颗二叉查找树, 因此红黑树的插入操作和二叉查找树的插入操作都是一样的,这个不难.但是红黑树插入节点完成后, 可能会破坏红黑树的特性, 为了保持红黑树的性质, 需要通过一系列操作来保持红黑树的性质.
既然说会破坏红黑树的性质, 那红黑树到底有什么性质呢? 红黑树有五个性质:
性质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
以上是关于 红黑树的主要内容,如果未能解决你的问题,请参考以下文章