deletion of red_black_tree

1. the structore is like binary search tree deletion

2. in addtion, we need to record extra information

        the checkpoint which to fix from

        the changed node color to decide whether need to fix or not

3. when the changed node (both deleted or moved) is red, no need to fix up

4. when only has one or null child, just transplant, and will check it
from the deleted position

5. when has two children, first you should remember to give the
successor deleted node's color

a. if succesor is the direct right child of deleted node, check from
successor's right child after moving

b. if successor is not the direct child, then check from the moved right
subtree