您的位置:首页 > 编程语言 > Python开发

算法导论程序30--红黑树的旋转(Python)

2017-05-27 10:47 253 查看
红黑树是一棵二叉搜索树,它在每个结点上增加了一个存储位来表示结点的颜色,可以是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的右孩子。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: