实验四 常见平衡树的实现与比较
问题描述:
代码实现红黑和AVL树
算法原理:
树的旋转知识
当我们在对红黑树进行插入和删除等操作时,对树做了修改,那么可能会违背红黑树的性质。
?
为了保持红黑树的性质,我们可以通过对树进行旋转,即修改树种某些结点的颜色及指针结构,以达到对红黑树进行
插入、删除结点等操作时,红黑树依然能保持它特有的性质(如上文所述的,五点性质)。
?
树的旋转,分为左旋和右旋,以下借助图来做形象的解释和介绍:
左旋
如上图所示:
当在某个结点pivot上,做左旋操作时,我们假设它的右孩子y不是NIL[T],pivot可以为树内任意右孩子而不是NIL[T]的结点。
左旋以pivot到y之间的链为“支轴”进行,它使y成为该孩子树新的根,而y的左孩子b则成为pivot的右孩子。
右旋右旋与左旋差不多,再此不做详细介绍。
红黑树插入、删除操作的具体实现
情况1:插入的是根结点。原树是空树,此情况只会违反性质2。? 对策:直接把此结点涂为黑色。情况2:插入的结点的父结点是黑色。此不会违反性质2和性质4,红黑树没有被破坏。? 对策:什么也不做。情况3:当前结点的父结点是红色且祖父结点的另一个子结点(叔叔结点)是红色。此时父结点的父结点一定存在,否则插入前就已不是红黑树。与此同时,又分为父结点是祖父结点的左子还是右子,对于对称性,我们只要解开一个方向就可以了。
在此,我们只考虑父结点为祖父左子的情况。同时,还可以分为当前结点是其父结点的左子还是右子,但是处理方式是一样的。我们将此归为同一类。? 对策:将当前节点的父节点和叔叔节点涂黑,祖父结点涂红,把当前结点指向祖父节点,从新的当前节点重新开始算法。
针对情况3,变化前(图片来源:saturnman)[插入4节点]:
变化后:
对策:当前节点的父节点做为新的当前节点,以新当前节点为支点左旋。
如下图所示,变化前[插入7节点]:
?
变化后:
?
?
解法:父节点变为黑色,祖父节点变为红色,在祖父节点为支点右旋
如下图所示[插入2节点]
变化后:
?
删除操作各种可能的情况
情况1:当前节点是红色??? 解法,直接把当前节点染成黑色,结束。??? 此时红黑树性质全部恢复。情况2:当前节点是黑色且是根节点??? 解法:什么都不做,结束
情况3:当前节点是黑色,且兄弟节点为红色(此时父节点和兄弟节点的子节点分为黑)。??? 解法:把父节点染成红色,把兄弟结点染成黑色,之后重新进入算法(我们只讨论当前节点是其父节点左孩子时的情况)。??? 然后,针对父节点做一次左旋。此变换后原红黑树性质5不变,而把问题转化为兄弟节点为黑色的情况。
??????????????????? ?3.变化前:
?
?????????????????????3.变化后:?
?
情况4:当前节点是黑色,且兄弟是黑色,且兄弟节点的两个子节点全为黑色。????? 解法:把当前节点和兄弟节点中抽取一重黑色追加到父节点上,把父节点当成新的当前节点,重新进入算法。(此变换后性质5不变)
?
????????????????????????4.变化前
?
??????????????????????? 4.变化后
?
情况5:当前节点颜色是黑色,兄弟节点是黑色,兄弟的左子是红色,右子是黑色。??? 解法:把兄弟结点染红,兄弟左子节点染黑,之后再在兄弟节点为支点解右旋,之后重新进入算法。此是把当前的情况转化为情况6,而性质5得以保持。
?
??????????????????5.变化后:
?
?
?
情况6:当前节点颜色是黑色,它的兄弟节点是黑色,但是兄弟节点的右子是红色,兄弟节点左子的颜色任意。
??? 解法:把兄弟节点染成当前节点父节点的颜色,把当前节点父节点染成黑色,兄弟节点右子染成黑色,
之后以当前节点的父节点为支点进行左旋,此时算法结束,红黑树所有性质调整正确。
????????????????????6.变化前:
?
????????????? 6.变化后:
?
平衡二叉树插入、删除操作的具体实现
LL的情况:
由于在A的左孩子B的左子树上插入结点F,使A的平衡因子由1增至2而失去平衡。故需进行一次顺时针旋转操作。 即将A的左孩子B向右上旋转代替A作为根结点,A向右下旋转成为B的右子树的根结点。而原来B的右子树则变成A的左子树。
LR情况:
RR情况:
RL情况:
AVL树节点的删除规则
设q为被删节点的父节点. 根据q-bf, 存在三种情况
如果q的新的bf==0, 意味着删除前==1 或者bf==-1, 此时高度减一
情况二
如果q的新的bf==1或者bf==-1, 意味着删除前==0, 左右子树高度一样 需改变父节点和其他某些祖父节点的平衡因子
情况三
如果q新的平衡
您可能关注的文档
最近下载
- 瑞安市江南物流园区城市设计.pdf VIP
- 2025年新版中小学信息技术基础知识竞赛试题(附答案).docx VIP
- 光宝ISA-7X标准泛用型伺服系统技术手册.pdf
- 建筑工程施工发包与承包违法行为认定查处管理办法.pdf VIP
- 通用 2025年民主生活会个人“五个方面+典型案例+上一年整改情况”存在的不足.docx VIP
- 三年级小学生家长会PPT模板期中期末班会成品演讲课件期末家长会 (1).pptx VIP
- 眼视光医学专科专业试卷.docx VIP
- 四川省成都市天立教育集团2024-2025学年高一上学期语文期中联考试卷(含答案).pdf VIP
- 黑彝故事——凉山布拖黑彝地位变迁与身份重建.pdf VIP
- (16篇)领导班子2025年度民主生活会对照检查材料.docx VIP
原创力文档

文档评论(0)