code: def extreme_child(self, sel_func, axis):
          
  
          max_key = lambda child_parent: child_parent[0].data[axis]
  
  
          # we don't know our parent, so we include None
          me = [(self, None)] if self else []
  
          child_max = [c.extreme_child(sel_func, axis) for c, _ in self.children]
          # insert self for unknown parents
          child_max = [(c, p if p is not None else self) for c, p in child_max]
  
          candidates =  me + child_max
  
          if not candidates:
              return None, None
  
          return sel_func(candidates, key=max_key)
docs: Returns a child of the subtree and its parent
  
          The child is selected by sel_func which is either min or max
          (or a different function with similar semantics).