input: Write a python function to search for a value in a binary search tree.
  assert search_bst(BinarySearchTree(), 5) == False
  tree = BinarySearchTree()
  tree.insert(10)
  tree.insert(5)
  tree.insert(15)
  assert search_bst(tree, 5) == True
  assert search_bst(tree, 10) == True
  assert search_bst(tree, 20) == False
output: class TreeNode:
      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 = TreeNode(value)
          else:
              self._insert_recursive(self.root, value)
  
      def _insert_recursive(self, node, value):
          if value < node.value:
              if node.left is None:
                  node.left = TreeNode(value)
              else:
                  self._insert_recursive(node.left, value)
          else:
              if node.right is None:
                  node.right = TreeNode(value)
              else:
                  self._insert_recursive(node.right, value)
  
  def search_bst(bst, value):
      def _search_recursive(node, value):
          if node is None:
              return False
          if node.value == value:
              return True
          elif value < node.value:
              return _search_recursive(node.left, value)
          else:
              return _search_recursive(node.right, value)
      
      return _search_recursive(bst.root, value)