- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一种高效的二叉查找树——红黑树
红黑树的定义
查找是计算机信息管理的最常见操作。普通的二叉查找树
的查找效率与树的深度有关。当它的左右子树深度相差较大时,
查找效率就与单链表差不多。为提高查找效率,必须设法使二
叉查找树的左、右子树的深度保持平衡。红黑查找树就是一种
平衡的二叉查找树。
定义 一棵二叉查找树如果满足下列性质,则称为红黑树:
每个结点或是红色的,或是黑色的(增加一位表示颜
色的存储位);
每个空结点NIL是黑色的;
如果一个结点是红色的,则它的儿子应是黑色的;
从任何一给定结点到其子孙叶结点每条简单路径上都
具有相同个数的黑结点。
图1给出了一棵红黑树的例子,其中黑结点用方框表示,红 结点用椭圆表示。
2、 例:
3、 推论:若一棵二叉查找树是红黑树,则它的任一子树也必为红黑
树。
4、 红黑树的生成
可以从空树开始,通过逐步插入结点来生成一棵红黑树。
向一棵红黑树T中插入一个新结点x的过程如下:先按普通二叉
查找树那样,在T中插入结点x,并将x着为红色。
为保证红黑树的的性质要求得以继续保持,一般需随时进行 调整。具体可分为以下几种情况:
若x的父结点是黑色的,则插入过程结束。
若x的父结点是红色的,而x的叔叔结点y是黑色的,则 需按图2或图3方式进行调整,其中子树a , 6 , 丫 , 8每一 棵都有一个黑根。
若x的结点是红色的,而x的叔叔结点y也是红色的,则 需按图4或图5方式进行调整。
对插入结点x在其祖父结点的右子树中的情况,不难
给出调整规则。
将x的祖父结点作为新的x,继续按情况(1)、(2)、(3) 处理。
由于需要判定插入结点的父结点及叔叔结点的红与黑, 为
便于操作,红黑树的结点就具有如下结构:
Ichild
parent
data
tag
rchild
其中Ichild、parent、rchild分别是指向左儿子、父结点和右儿
子的指针,tag是红黑标志位,data是数据域
2 红黑树的查找效率
为方便起见,我们把红黑树的叶结点(NIL )称为外部结点, 带有关键字的结点称为内部结点。
定义 从某个结点x出发(不包括结点x本身)到叶结点的 路径上的黑结点个数,称为该结点 x的黑深度,记为bd (x), 根结点的黑深度就是该红黑树的黑深度。
定理1以结点x为根的子树,至少有2bd(x)-1个内部结点。
证:对以x结点为根的子树深度用归纳法。 为方便起见,将 以x为根的子树深度记为d (x)。
若d (x) =0,则x就是叶结点NIL,这时该子树的内部结 点数为0, bd(x)=0,故结论为真。
设d (x) k-1时结论为真,考察d (x) =k的情形。由红 黑树定义中的性质要求3和4可知,当x为红色时,x的子树的 黑深度为bd (x) -1;当x为黑色时,x的子树的黑深度或为bd (x),或为bd (x) -1,而x的子树的深度小于等于k-1,由归 纳假设可知,以x为根的子树至少包含有 2bd(x) 1-1+2bd(x) 1-1+1 个内部结点。故结论成立。
定理2含有n个内部结点的红黑树的深度至多为 2lg (n+1)。
证:设红黑树的深度为d,根据红黑树定义中的性质要求3, 从根到叶结点的路径上至少有一半的黑结点, 从而该树的黑深度 至少为d/2,由定理1有2d/2 T v n
故 d
故 d /2 lg (n+1),
d 2lg (n+1)
由于查找操作的时间复杂性与红黑树的深度成正比, 故对红 黑树的查找,在最坏情况下的时间复杂性为 O (lgn)。若考虑红 黑树的动态查找特性,即在查找失败时插入该结点,这时最坏情 况是发生树的形状连续调整,但调整次数不会超过树的深度,故 时间复杂性仍保持为O (lgn)。
综上所述,不难发现,红黑树是一种高效的查找树,值得推 广应用。
i : =i+1;
if A.data[i]=x then
KA. data[i ]=A.data[A.last];
A.last : =A.last — 1
3
J
end; {DELETE}
MEMBER,INSERT,DELETE运算有最坏情况下的复杂性为 O(n) 二、字典的散列实现
图示开散列(hashing)的思想,使每一个运算所需要的时间最 坏情况下也为常数
散列函数
例
function h(x :elementtype):0..B-1;
var
i,sun:integer;
begin
sum : =0
for i : =1 to 10 do
sum : =sum +ord (x[i]);
h : =sum mod B
end;{h}
其中集合元素x是长度为10的字符串。该散列函数利用 Pascal提 供的函数ord(ord?字符所对应的整数码),将字符串x中的每个字符 转换为一个整数,然后
您可能关注的文档
最近下载
- “十五五”消防事业发展规划.docx VIP
- 2025高考数学专项讲义第06讲几何法求空间角与空间距离(学生版+解析).docx VIP
- 2025年执业药师承诺书.pdf VIP
- 高考语文阅读理解《到梨花屯去》含答案.docx VIP
- (高清版)-B-T 2651-2023 金属材料焊缝破坏性试验 横向拉伸试验.pdf VIP
- 2025年无人机驾驶员实操考核模拟试题及答案.docx VIP
- 中国偶像产业迭代研究报告-(研究报告).pdf VIP
- 2025年广东省高中历史学业水平考试综合测评(一)历史试题(原卷版+解析版).docx VIP
- 2025-2026秋季学年第一学期“1530”安全教育记录表.docx VIP
- 人教版小学数学三年级上册《多位数乘一位数》教材分析.doc VIP
原创力文档


文档评论(0)