docs: def delete_min(self):
          """
          Delete the left-most value from a tree.
          """
  
          # Base case: If there are no nodes lesser than this node, then this is the
          # node to delete.
          if self.left is NULL:
              return NULL, self.value
  
          # Acquire more reds if necessary to continue the traversal. The
          # double-deep check is fine because NULL is red.
          if not self.left.red and not self.left.left.red:
              self = self.move_red_left()
  
          # Recursive case: Delete the minimum node of all nodes lesser than this
          # node.
          left, value = self.left.delete_min()
          self = self._replace(left=left)
  
          return self.balance(), value