input: Write a python function to find the minimum value in a binary search tree.
  assert find_min(bst.root) == 2
  bst2 = BinarySearchTree()
  nums2 = [20, 10, 30, 5, 15]
  for num in nums2:
      bst2.insert(num)
  assert find_min(bst2.root) == 5
  
  ```python
  def find_min(node):
      current = node
      while current.left is not None:
          current = current.left
      return current.value
output: class Node:
      def __init__(self, value):
          self.value = value
          self.left = None
          self.right = None
  
  class BinarySearchTree:
      def __init__(self):
          self.root = None
  
      def insert(self, value):
          if self.root is None:
              self.root = Node(value)
          else:
              self._insert(value, self.root)
  
      def _insert(self, value, current_node):
          if value < current_node.value:
              if current_node.left is None:
                  current_node.left = Node(value)
              else:
                  self._insert(value, current_node.left)
          elif value > current_node.value:
              if current_node.right is None:
                  current_node.right = Node(value)
              else:
                  self._insert(value, current_node.right)
  
  def find_min(node):
      current = node
      while current.left is not None:
          current = current.left
      return current.value
  
  # Test cases
  bst = BinarySearchTree()
  nums = [10, 5, 15, 2, 7]
  for num in nums:
      bst.insert(num)
  assert find_min(bst.root) == 2
  
  bst2 = BinarySearchTree()
  nums2 = [20, 10, 30, 5, 15]
  for num in nums2:
      bst2.insert(num)
  assert find_min(bst2.root) == 5