parameters: (self, key)
return_statement: return self.__find(self.__root, key)
docstring: Takes as input a key 'key' to be searched for in this tree. If 'key' is in the tree, the method
          returns 'True' and the value associated with the key. Otherwise, the method returns 'False, None'.
  
          Args:
          -----
          key - an input keey to be searched for in the tree.
  
          Returns:
          --------
          'found, value' where 'found' (True/False) whether the key is in the tree, 
          'value' is the value associated with the key 'key'.
  
          Exceptions:
          -----------
          BTreeNotInitializedError if the method is invoked on an unitialized (created or loaded) btree.
  
          BTreeInvalidNodeError while a btree that doesn't have btree property five described in Cormen et al 18.1:
          (t - the minimum degree of the btree) the root may contain at most '2t - 1' keys, if the root is an internal
          node, it may have at most '2t' children.
docstring_summary: Takes as input a key 'key' to be searched for in this tree. If 'key' is in the tree, the method
          returns 'True' and the value associated with the key. Otherwise, the method returns 'False, None'.
docstring_tokens: Takes as input a key key to be searched for in this tree . If key is in the tree the method returns True and the value associated with the key . Otherwise the method returns False None .
function: def find(self, key):
          """
          Takes as input a key 'key' to be searched for in this tree. If 'key' is in the tree, the method
          returns 'True' and the value associated with the key. Otherwise, the method returns 'False, None'.
  
          Args:
          -----
          key - an input keey to be searched for in the tree.
  
          Returns:
          --------
          'found, value' where 'found' (True/False) whether the key is in the tree, 
          'value' is the value associated with the key 'key'.
  
          Exceptions:
          -----------
          BTreeNotInitializedError if the method is invoked on an unitialized (created or loaded) btree.
  
          BTreeInvalidNodeError while a btree that doesn't have btree property five described in Cormen et al 18.1:
          (t - the minimum degree of the btree) the root may contain at most '2t - 1' keys, if the root is an internal
          node, it may have at most '2t' children.
          """
          if not self.__root:
              raise BTreeNotInitializedError()
  
          return self.__find(self.__root, key)
function_tokens: def find ( self , key ) : if not self . __root : raise BTreeNotInitializedError ( ) return self . __find ( self . __root , key )