(self, node_u, node_v)
replace u with v
        :param node_u: replaced node
        :param node_v: 
        :return: None
replace u with v
        :param node_u: replaced node
        :param node_v: 
        :return: None
replace u with v : param node_u : replaced node : param node_v : : return : None
def transplant(self, node_u, node_v):
        """
        replace u with v
        :param node_u: replaced node
        :param node_v: 
        :return: None
        """
        if node_u.parent is None:
            self.root = node_v
        elif node_u is node_u.parent.left:
            node_u.parent.left = node_v
        elif node_u is node_u.parent.right:
            node_u.parent.right = node_v
        # check is node_v is None 
        if node_v:
            node_v.parent = node_u.parent
def transplant ( self , node_u , node_v ) : if node_u . parent is None : self . root = node_v elif node_u is node_u . parent . left : node_u . parent . left = node_v elif node_u is node_u . parent . right : node_u . parent . right = node_v # check is node_v is None  if node_v : node_v . parent = node_u . parent