Case 1
兄弟节点 (sibling node) S 为红色,则父节点 P 和侄节点 (nephew node) C 和 D 必为黑色(否则违反性质 3)。与插入后维护操作的 Case 5 类似,这种情况下无法通过直接的旋转或染色操作使其满足所有性质,因此通过前置操作优先保证部分结构满足性质,再进行后续维护即可。
这种情况的维护需要:
- 若待删除节点 N 为左子节点,左旋 P; 若为右子节点,右旋 P。
- 将 S 染黑,P 染红(保证 S 节点的父节点满足性质 4)。
- 此时只需根据结构对以当前 P 节点为根的子树进行维护即可(无需再考虑旋转染色后的 S 和 D 节点)。
Image Not Showing
Possible Reasons
- The image was uploaded to a note which you don't have access to
- The note which the image was originally uploaded to has been deleted
Learn More →
参考视频
Case 2
兄弟节点 S 和侄节点 C, D 均为黑色,父节点 P 为红色。此时只需将 S 染红,将 P 染黑即可满足性质 3 和 4。
Image Not Showing
Possible Reasons
- The image was uploaded to a note which you don't have access to
- The note which the image was originally uploaded to has been deleted
Learn More →
参考视频
Case 3
兄弟节点 S,父节点 P 以及侄节点 C, D 均为黑色。
此时也无法通过一步操作同时满足性质 3 和 4,因此选择将 S 染红,优先满足局部性质 4 的成立,再递归维护 P 节点根据上部结构进行后续维护。
Image Not Showing
Possible Reasons
- The image was uploaded to a note which you don't have access to
- The note which the image was originally uploaded to has been deleted
Learn More →
Case 4
兄弟节点是黑色,且与 N 同向的侄节点 C(由于没有固定中文翻译,下文还是统一将其称作 close nephew)为红色,与 N 反向的侄节点 D(同理,下文称作 distant nephew)为黑色,父节点既可为红色又可为黑色。
此时同样无法通过一步操作使其满足性质,因此优先选择将其转变为 Case 5 的状态利用后续 Case 5 的维护过程进行修正。
该过程分为三步:
- 若 N 为左子节点,右旋 P,否则左旋 P。
- 将节点 S 染红,将节点 C 染黑。
- 此时已满足 Case 5 的条件,进入 Case 5 完成后续维护。
Image Not Showing
Possible Reasons
- The image was uploaded to a note which you don't have access to
- The note which the image was originally uploaded to has been deleted
Learn More →
参考视频
Case 5
兄弟节点是黑色,且 close nephew 节点 C 为红色,distant nephew 节点 D 为黑色,父节点既可为红色又可为黑色。此时性质 4 无法满足,通过旋转操作使得黑色节点 S 变为该子树的根节点再进行染色即可满足性质 4。具体步骤如下:
- 若 N 为左子节点,左旋 P,反之右旋 P。
- 交换父节点 P 和兄弟节点 S 的颜色,此时性质 3 可能被打破。
- 将 distant nephew 节点 D 染黑,同时保证了性质 3 和 4。
Image Not Showing
Possible Reasons
- The image was uploaded to a note which you don't have access to
- The note which the image was originally uploaded to has been deleted
Learn More →
参考视频