input: Write a function to find the minimum value in a binary search tree.
  assert find_min_value(tree) == 1
  tree.insert(1)
  tree.insert(2)
  tree.insert(3)
  assert find_min_value(tree) == 1
  tree = BinarySearchTree()
  tree.insert(10)
  tree.insert(5)
  tree.insert(15)
  tree.insert(2)
  assert find_min_value(tree) == 2
output: class TreeNode:
      def __init__(self, key):
          self.left = None
          self.right = None
          self.val = key
  
  class BinarySearchTree:
      def __init__(self):
          self.root = None
  
      def insert(self, key):
          if self.root is None:
              self.root = TreeNode(key)
          else:
              self._insert(self.root, key)
      
      def _insert(self, node, key):
          if key < node.val:
              if node.left is None:
                  node.left = TreeNode(key)
              else:
                  self._insert(node.left, key)
          else:
              if node.right is None:
                  node.right = TreeNode(key)
              else:
                  self._insert(node.right, key)
  
  def find_min_value(tree):
      current = tree.root
      while current.left is not None:
          current = current.left
      return current.val