红黑树右旋转
2016-05-21 18:31
302 查看
红黑树的平衡
红黑树首先是一棵二叉查找树,它每个结点都被标上了颜色(红色或黑色),红黑树满足以下5个性质:
1、 每个结点的颜色只能是红色或黑色。
2、 根结点是黑色的。
3、 每个叶子结点都带有两个空的黑色结点(被称为黑哨兵),如果一个结点n的只有一个左孩子,那么n的右孩子是一个黑哨兵;如果结点n只有一个右孩子,那么n的左孩子是一个黑哨兵。
4、 如果一个结点是红的,则它的两个儿子都是黑的。也就是说在一条路径上不能出现相邻的两个红色结点。
5、 对于每个结点来说,从该结点到其子孙叶结点的所有路径上包含相同数目的黑结点。
红黑树的这5个性质中,第3点是比较难理解的,但它却非常有必要。我们看图1中的左边这张图,如果不使用黑哨兵,它完全满足红黑树性质,结点50到两个叶结点8和叶结点82路径上的黑色结点数都为2个。但如果加入黑哨兵后(如图1右图中的小黑圆点),叶结点的个数变为8个黑哨兵,根结点50到这8个叶结点路径上的黑高度就不一样了,所以它并不是一棵红黑树。
相关文章推荐
- vector容器与iterator迭代器
- Unity3D学习笔记(10)—— 游戏序列化
- BZOJ 4554: [Tjoi2016&Heoi2016]游戏
- Android数据过滤器:Filter
- 【oschina android源码分析】切换夜间模式的实现
- 关于伪类元素:before和:after
- 【oschina android源码分析】页面通知(站内信)的设计-android轮询方案
- Android 编程下的 TraceView 简介及其案例实战
- hge source explor 0x4 input module
- 详解Android动画之Frame Animation
- MongoDB服务无法启动,发生服务特定错误:100
- C++之类型转换
- 使用TraceView性能分析工具的方法
- 【oschina android源码分析】登陆和退出的设计
- 2016"百度之星" - 初赛(Astar Round2A)1006 Gym Class(优先队列+拓扑排序)
- 常用数据结构的功能及复杂度总结
- QCustomPlot鼠标点选折线上的
- pl/sql 复合类型,游标
- Struts2+Hibernate+Spring 整合示例==》Spring整合Struts2简单示例==》Spring整合Hibernate简单示例
- spring-mybatis版本的坑