您的位置:首页 > 其它

红黑树

2016-02-02 00:15 183 查看
红黑树(没有一条路径会比其他路径长2倍)是一种平衡二叉树,它在计算机中被广泛的应用!

结点采用的结构:

struct red-black{
int key;
int color;
struct red-black *p,*left,*right;//父,左,右
}


一、牢记红黑树的五大性质。

红黑树的五大性质是学习红黑树最重要最基础的,一定要背下来,方便在插入删除的时候保持这五大性质。

1、每个结点的颜色是红色或者黑色。

2、根结点是黑色。

3、每个叶结点都是黑色

4、红色结点的子结点都是黑色。

5、对每一个结点,从该结点到其后代所有的叶子结点的简单路径上,都包含相同数目的黑色结点。

说明:根结点的父结点和所有叶子结点的子结点都指向同一个哨兵结点T.nil,当然这个哨兵结点的颜色为黑色。

二、旋转操作

旋转是一种能保持二叉搜索树性质的搜索树局部操作。
旋转分为左旋和右旋
左旋的伪代码如下:
left-rotate(T,x)
{
y=x.right;
x.right=y.left
y.p=x.p          //孩子找父亲是唯一的
if(x.p==T.nil)   //父亲找孩子就会有多种情况
T.root=y
else if(x==x.p.left)
x.p.left=y
else x.p.right=y
y.left=x
x.p=y
}


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