instruction: Írjon algoritmust egy bináris keresési fa megvalósítására.
output: 1. Definiáljunk egy `Node` osztályt, amely egy csomópontot képvisel a fában, a `left`, `right` és `value` tulajdonságokkal a gyermekek és a csomópont értékének tárolására.
  
  ```python
  class Node:
      def __init__(self, data):
          self.left = None
          self.right = None
          self.value = data
  ```
  
  2. Definiáljunk egy `BinarySearchTree` osztályt, amely tartalmazza a fa gyökércsomópontját, valamint metódusokat egy csomópont beszúrására, egy csomópont keresésére és a fán való áthaladásra.
  
  ```python
  class BinarySearchTree:
      def __init__(self):
          self.root = None
  ```
  
  3. A `insert` metódus implementálása úgy, hogy a gyökércsomópontból indulunk ki, és az új értéket az aktuális csomóponttal összehasonlítva haladunk lefelé a fán, és addig haladunk balra (ha az új érték kisebb) vagy jobbra (ha az új érték nagyobb), amíg üres helyet nem találunk. Ezután illesszük be az új csomópontot az üres helyre.
  
  ```python
      def insert(self, data):
          new_node = Node(data)
          if self.root is None:
              self.root = new_node
              return
          current_node = self.root
          while current_node:
              if data < current_node.value:
                  ha current_node.left nem létezik:
                      current_node.left = new_node
                      return
                  else:
                      aktuális_csomópont = aktuális_csomópont.left
              else:
                  Ha a current_node.right nincs:
                      current_node.right = new_node
                      return
                  else:
                      current_node = current_node.right
  ```
  
  4. Implementáljuk a `search` metódust, amely egy értéket fogad el bemenetként, és `True`-t ad vissza, ha az érték a fában van, és `False`-t, ha nincs. Hasonlóan a `insert` metódushoz, a metódus a gyökércsomópontból indul, és a keresett értéket az aktuális csomóponthoz hasonlítva iterálja lefelé a fát, és addig halad balra vagy jobbra, amíg az értéket meg nem találjuk, vagy el nem érjük a fa végét.
  
  ```python
      def search(self, data):
          current_node = self.root
          while current_node:
              if data == current_node.value:
                  return True
              elif data < current_node.value:
                  current_node = current_node.left
              else:
                  current_node = current_node.right
          return False
  ```
  
  5. A csomópontokat meghatározott sorrendben meglátogató traverzálási módszerek, mint például a `inorder`, `preorder` és `postorder` megvalósítása.