对RBTree的总结
来源:互联网 发布:ssm log4j sql 编辑:程序博客网 时间:2024/06/05 10:54
红黑树是一棵二叉搜索树,它在每个节点上增加了一个存储位来表示节点的颜色,可以是Red或Black。通过对任何一条从根到叶子简单路径上的颜色来约束,红黑树保证最长路径不超过最短路径的两倍,因而近似于平衡。
红黑树是满足下面红黑性质的二叉搜索树
1. 每个节点,不是红色就是黑色的
2. 根节点是黑色的
3. 如果一个节点是红色的,则它的两个子节点是黑色的(两个红色结点不能相邻)
4. 对每个节点,从该节点到其所有后代叶节点的简单路径上,均包含相同数目的黑色节点
为什么满足上面的颜色约束性质,红黑树能保证最长路径不超过最短路径的两倍?
假设在极端情况下,最短路径上的结点全为黑,最长路径上的黑色结点数与最短路径上的相同,红色结点只能夹在黑色结点的中间,最长路径的长度必然不会超过最短路径的两倍。
插入的几种情况
cur为当前节点,p为父节点,g为祖父节点,u为叔叔节点
第一种情况
cur为红,p为红,g为黑,u存在且为红
则将p,u改为黑,g改为红,然后把g当成cur,继续向上调整。
第二种情况
cur为红,p为红,g为黑,u不存在/u为黑
p为g的左孩子,cur为p的左孩子,则进行右单旋转;相反,p为g的右孩子,cur为p的右孩子,则进行左单旋转
p、g变色–p变黑,g变红
第三种情况
cur为红,p为红,g为黑,u不存在/u为黑
p为g的左孩子,cur为p的右孩子,则针对p做左单旋转;相反,p为g的右孩子,cur为p的左孩子,则针对p做右单旋转–>转换成了情况2
0 0
- 对RBTree的总结
- RBTree-红黑树的实现
- RBTree的插入算法
- RBTree的插入算法
- RBTree的插入操作
- RBTree的模拟实现
- RBTree
- RBTree
- RBTree
- RBTree
- RBTree
- rbtree
- rbtree
- RBTree
- 红黑树(RBTree)的实现
- 红黑树的简单实现-RBTree
- 红黑树(RBTree)的分析和实现
- linux内核分析之rbtree的使用
- 进程管理和调度
- 《leetCode》:Shortest Palindrome
- BZOJ 3037 创世纪
- Leetcode题解 238. Product of Array Except Self
- Spring Boot 基于Maven 基础Pom.xml文件
- 对RBTree的总结
- 树莓派安装mplayer
- codeforces 362 div2D Puzzles
- 算法复习之快排(C++版)
- UVA10152ShellSort
- LPC1788入门手记
- 锁 互斥量 信号量
- BZOJ4633 SCOI2016 萌萌哒 并查集维护ST表
- php设计模式-单例模式