input: Write a python function to check if a value exists in a binary search tree.
  assert BinarySearchTree().search(5) == False
  bst = BinarySearchTree()
  bst.add(10)
  bst.add(5)
  bst.add(20)
  assert bst.search(5).val == 5
  assert bst.search(10).val == 10
  assert bst.search(20).val == 20
  assert bst.search(15) == False
output: class TreeNode:
      def __init__(self, x):
          self.val = x
          self.left = None
          self.right = None
  
  class BinarySearchTree:
      def __init__(self):
          self.root = None
      
      def add(self, val):
          if not self.root:
              self.root = TreeNode(val)
          else:
              self._add(self.root, val)
      
      def _add(self, node, val):
          if val < node.val:
              if not node.left:
                  node.left = TreeNode(val)
              else:
                  self._add(node.left, val)
          else:
              if not node.right:
                  node.right = TreeNode(val)
              else:
                  self._add(node.right, val)
      
      def search(self, val):
          return self._search(self.root, val)
      
      def _search(self, node, val):
          if not node:
              return False
          if node.val == val:
              return node
          elif val < node.val:
              return self._search(node.left, val)
          else:
              return self._search(node.right, val)