code: def pop_item(self):
          
          if self.is_empty():
              raise KeyError("pop_item(): tree is empty")
          node = self._root
          while True:
              if node.left is not None:
                  node = node.left
              elif node.right is not None:
                  node = node.right
              else:
                  break
          key = node.key
          value = node.value
          self.remove(key)
          return key, value
docs: T.pop_item() -> (k, v), remove and return some (key, value) pair as a
          2-tuple; but raise KeyError if T is empty.