code: def find_replacement(self):
          
  
          if self.right:
              child, parent = self.right.extreme_child(min, self.axis)
          else:
              child, parent = self.left.extreme_child(max, self.axis)
  
          return (child, parent if parent is not None else self)
docs: Finds a replacement for the current node
  
          The replacement is returned as a
          (replacement-node, replacements-parent-node) tuple