作为红色节点添加,如果添加之后的父节点是红色,违反红黑树规则,要进行处理。
分两大种情况:
一、叔节点也是红色,这说明祖父节点是黑色,那么把父节点和叔节点变黑,祖父节点变红,问题递归交给祖父节点去处理。如果递归到最后祖父节点是红色的而且是根节点,直接变黑即可。
二、叔节点是黑色的,这时候有四种情况,但是是2v2镜像的,考虑父节点是祖父节点的左子节点,而叔节点是祖父节点的右子节点的情况。在这种情况下,如果插入后节点是父节点的右子节点,把父节点左旋。
变成父节点是插入子节点的左子节点,这时候再右旋原祖父节点,这样的话插入后节点成为祖父节点,原父节点和原叔节点变成左右两个子节点,把插入后节点的颜色变黑,原叔节点的颜色变红即可。