版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
aparticularwayofstoringandorganizingdatainacomputersothatitcanused Color:boolorKey:anytypewhichisLeft:apointeroftree’snodethatpointstoleftRight:apointeroftree’snodethatpointstorightParent:apointeroftree’snodethatpointsto所 性质1性质2性质3.所有叶子都是黑色(叶子是NIL节点)性质5
哨兵节点。哨兵节点表示是这颗树的边界。哨兵节点和树的普通节点有着相同的域(就是一个普通的节点),除了 有至少2𝑏ℎ(𝑣)-1个内中bh(v)=从v到 SEARCHPREDECESORSUCCESSOR 些操作的时间复杂度也是O(lg 是O(lgn)(uncle)
nodegrandparent(noden)}nodeuncle(noden)if(n->parent==elsereturngrandparent(n)-}:voidinsert_case1(noden)if(n->parent==NIL)n->color=BLACK;elseinsert_case2(n);}:voidinsert_case2(noden)if(n->parent->colorBLACKreturn/*else}
Caseremains:P情形3:如果父节点P和叔父节点U二者都是红色,(此时新插入节点N做为P的左子节点或右子节点都voidinsert_case3(noden)if(uncle(n)!=NIL&&uncle(n)->color==RED){n->parent->color=BLACK;uncle(n)->color=BLACK;grandparent(n)->color=RED;}else}LeftChild->key<=node->key<=RightChild-
voidrotate_right(pivot){parent=pivot->parent;root=parent->parent;
parent->left=pivot->right;if(pivot->right!=null){pivot->right->parent=}pivot->parent=if(parent==root-root->left=}elseroot->right=}pivot->right=parent;parent->parent=pivot;}
Caseremains:P[red],U:voidinsert_case4(noden)if(n==n->parent->rightn->parent==grandparent(n)->left)n=n-}elseif(n==n->parent->leftn->parent==grandparent(n)->right)n=n->right;}}
Caseremains:P[red],UN[red]inthe“outerlayer”ofthe情形5父节点P是红色而叔父节点U是黑色或缺少,新节点N是其父节点的左子节点,而父节点P又是其父节点G的左子节点。在这种情形下,我们进行针对祖父节点G的一次右旋转,并改变P和G的voidinsert_case5(noden){n->parent->color=BLACK;grandparent(n)->color=RED;if(n==n->parent->left&&n->parent==grandparent(n)->left)}else{/*Here,n==n->parent->rightn->parent==grandparent(n)->right}} SL(LeftSon)称为S的左儿子,SR(RightSon)称为S兄弟节点:sibling(structnode*nif(n==n->parent-returnn->parent-elsereturnn->parent-}voiddelete_one_child(structnode*n)/**Precondition:nhasatmostonenon-nullchild.*/structnode*child=is_leaf(n->right)?n->left:n->right; ce_node(n,child);if(n->color==BLACK)if(child->color==RED)child->color=elsedelete_case1(child);//entrythefirst}}voiddelete_case1(structnode*n)if(n->parent!=NIL)}2S是红色。在这种情况下我们在N的父亲上做左旋转,把红色兄弟转换成NN的父亲和祖父的颜色。voiddelete_case2(structnode*n){structnode*s=sibling(n);if(s->color==RED)n->parent->color=RED;s->color=BLACK;if(n==n->parent-elserotate_right(s);
Caseremains:S[black],P[blackOr3N的父亲、S和S绘Svoiddelete_case3(structnode*n)structnode*s=if((n->parent->color==&&(s->color==&&(s->left->color==&&(s->right->color==BLACK))s->color=}else}
Case S[black],P[black],Notbothof𝑆𝐿𝑎𝑛𝑑𝑆𝑅𝑎𝑟𝑒S[black],情况4:S和S的儿子都是黑色,但是N简单的交换Nvoiddelete_case4(structnodestructnode*s=if((n->parent->color==&&(s->color==&&(s->left->color==&&(s->right->color==BLACK)){s->color=RED;n->parent->color=}else}
Caseremains:S[black],Notbothof𝑆𝐿𝑎𝑛𝑑𝑆𝑅𝑎𝑟𝑒情况5:S是黑色,S的左儿子是红色,S的右儿子是黑色,而N是它父亲的左儿子。在这种情况下我们在S上做右旋转,这样S的左儿子成为S的父亲和N的新兄弟。我们接着交换S和它的新父亲的颜色。voiddelete_case5(structnode*n)structnode*s=if(s->color==BLACK){//Is“ifstatement”if((n==n->parent-&&(s->right->color==BLACK)&&(s->left->color==//Areall“teststatements”s->color=s->left->color=}elseif((n==n->parent-&&(s->left->color==BLACK)&&(s->right->color==s->color=s->right->color=BLACK;
Caseremains:S[black],thefarthersonofSfromNis情况6:S是黑色,S的右儿子是红色,而N是它父亲的左儿子。在这种情况下我们在N的父亲上做左旋转,这样S成为N的父亲和S的右儿子的父亲。我们接着交换NSS的右儿子为黑色。voiddelete
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 吉林省2024七年级数学上册第2章整式及其加减专题训练5题型整合整式化简求值课件新版华东师大版
- 幼儿户外活动案例分析
- 水灾应急演练
- 脑梗死偏瘫康复治疗
- 火灾逃生演练AE
- 红领巾说课稿
- 城市道路人行道铺设合同模板
- 农村耕地租赁合同:农业营销
- 桥梁建设杂工施工合同
- 办公园区耐磨地面施工合同
- 幼儿园大班语言:《握笔的正确姿势》 课件
- 林规发〔2016〕58号防护林造林工程投资估算指标
- 小学特教综合人教四年级上册目录它们都会跳(蔡倩双流特校)
- 涉密人员脱离涉密岗位审批表此表
- 全国河流水文站坐标
- 高考专题复习:散句与整句变换(课件32张)
- 雾化吸入常见并发症的预防与处理
- 中小学幼儿园数字化教学资源进校园管理办法
- 高效课堂做好笔记 课件-学习习惯的培养主题班会
- 鞍钢鲅鱼圈钢铁基地项目设计方案
- 人卫版外科学小肠疾病第一、二、三节课件
评论
0/150
提交评论