赞
踩
具有以下几种性质的树被称为红黑树:
下图就是一个红黑树:
红黑树是一种平衡二叉查找树的变体,它的左右子树高差有可能大于 1,所以红黑树不是严格意义上的平衡二叉树(AVL),但对之进行平衡的代价较低, 其平均统计性能要强于 AVL 。(优点)
由于每一颗红黑树都是一颗二叉排序树,因此,在对红黑树进行查找时,可以采用运用于普通二叉排序树上的查找算法,在查找过程中不需要颜色信息。
相关概念:
1.父结点:即插入结点位置的上层结点
2.当前结点:正在处理的结点称为当前结点
3.兄弟结点:父亲结点的另一个结点为兄弟结点
4.祖父结点:父结点的上一层结点
插入:
1.红黑树为空,直接插入并且将红色变为黑色,因为根结点一定是黑色
2.插入的key已经存在,直接替换即可,保持原结点的颜色不变
3.插入的key的父结点为黑,直接插入即可
4.插入的key的父结点为红色,该结点一定不是根结点,有祖父结点
根据不同情况进行判断:
4.1 叔叔结点存在且为红
此时:
1.将父结点p和兄弟结点s变黑
2.将pp结点变红,设为当前插入结点
如果pp结点为根结点就必须变黑,使得从根结点到叶子结点的路径黑色+1.
这种情况也是唯一一种增加红黑树黑色结点层数的插入情况。
4.2 叔叔结点不存在或者为黑色结点,此时父结点为祖父结点左子结点
4.2.1 插入结点为父结点的左子结点
将p变为黑
将pp变为红
以p为轴右旋(LL型):即p替换pp结点
4.2.2 插入位置为父结点的右结点
LR型
先左旋,变为LL型
根据LL型原则,将pp变红,I变黑,右旋。
4.3 叔叔结点不存在或为黑色,且父结点为祖父结点的右结点
4.3.1 插入位置为父结点的右结点
RR型
将pp变红色
将p变黑色
以p为轴心左旋
4.3.2 插入结点为父结点的左子结点
RL型
先右旋将I和P位置调换变为RR型
将PP变为红色,I变为黑色,左旋。
1、根结点至少有两个子女;
2、每个非根节点所包含的关键字个数 j 满足:┌m/2┐ - 1 <= j <= m - 1;
3、除根结点以外的所有结点(不包括叶子结点)的度数正好是关键字总数加1,故内部子树个数 k 满足:┌m/2┐ <= k <= m ;
4、所有的叶子结点都位于同一层。
在B-树中,每个结点中关键字从小到大排列,并且当该结点的孩子是非叶子结点时,该k-1个关键字正好是k个孩子包含的关键字的值域的分划。
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。