算法导论程序30--红黑树的旋转(Python)
来源:互联网 发布:助理软件研发工程师 编辑:程序博客网 时间:2024/06/06 18:14
红黑树是一棵二叉搜索树,它在每个结点上增加了一个存储位来表示结点的颜色,可以是RED或BLACK.
通过对任何一条从跟到叶子的简单路径上各个结点的颜色进行约束,红黑树确保没有一条路径会比其他路径长出2倍,因而是近似于平衡的。
一棵红黑树是满足下面红黑性质的二叉搜索树:
1.每个结点或是红色的,或是黑色的。
2.根结点是黑色的。
3.每个叶结点是黑色的。
4.如果一个结点是红色的,则它的两个子节点都是黑色的。
5.对每个结点,从该结点到其所有所有后代叶结点的简单路径上,均包含相同数目的黑色结点。
从某个结点x出发(不含该结点)到达一个叶结点的任意一条简单路径上的黑色结点个数称为该结点的黑高(black-height)bh(x)。
红黑树的黑高为其根结点的黑高。
旋转:
这是一种能保持二叉搜索树性质的搜索树局部操作。
左旋:当在某个结点x上做左旋操作时,假设它的右孩子为y而不是T.nil。x可以为其右孩子而不是T.nil结点的树内任意结点。左旋以x到y的链作为“支轴”进行,它使y成为该子树新的根结点,x成为y的左孩子,y的左孩子成为x的右孩子。
阅读全文
0 0
- 算法导论程序30--红黑树的旋转(Python)
- 算法导论程序31--红黑树的插入(Python)
- 算法导论程序13-快速排序的描述(Python)
- 算法导论程序23--有根树的表示(Python)
- 算法导论程序8--堆(Python)
- 算法导论程序16--基数排序(Python)
- 算法导论程序21--链表(Python)
- 算法导论程序6--随机算法(Python)
- 算法导论程序11--堆排序算法(Python)
- 算法导论程序4--矩阵乘法的分治算法(Python)
- 算法导论程序19-期望为线性时间的选择算法(Python)
- 算法导论读后感-之树的旋转(维护红黑树的性质)
- 算法导论程序32--红黑树的删除
- 算法导论 红黑树 学习 旋转(二)
- 算法导论程序1--插入排序(Python+Java)
- 算法导论程序2--归并排序(Python)
- 算法导论程序3--最大子数组问题(Python)
- 算法导论程序5--雇佣问题(Python)
- LINUX共享内存使用常见陷阱与分析
- Java面试【静态方面null调用】
- nginx配置
- 【算法题】奇怪的表达式求值
- JAVA的23种设计模式---策略模式
- 算法导论程序30--红黑树的旋转(Python)
- jQuery 属性操作
- BZOJ4403: 序列统计
- .emacs
- Unity3D NGUI UIInput中文输入,插入文本时后面文本被删除问题
- 基于ARM板的打印机程序
- JAVA中常用的加密算法(Hash、base64、MD5、ASC)
- Apache Maven项目提供的Compiler插件详解
- 自己动手模仿 springmvc 写一个 mvc框架