binary search tree

Üdvözlöm, Ön a binary search tree szó jelentését keresi. A DICTIOUS-ban nem csak a binary search tree szó összes szótári jelentését megtalálod, hanem megismerheted az etimológiáját, a jellemzőit és azt is, hogyan kell a binary search tree szót egyes és többes számban mondani. Minden, amit a binary search tree szóról tudni kell, itt található. A binary search tree szó meghatározása segít abban, hogy pontosabban és helyesebben fogalmazz, amikor beszélsz vagy írsz. Abinary search tree és más szavak definíciójának ismerete gazdagítja a szókincsedet, és több és jobb nyelvi forráshoz juttat.

Főnév

binary search tree (tsz. binary search trees)

  1. (informatika, gráfelmélet) bináris keresőfa

A Binary Search Tree (röviden: BST, magyarul: bináris keresőfa) egy hierarchikus adatstruktúra, amely a bináris fa és a keresés szabályait egyesíti. Lényegében olyan bináris fa, amely lehetővé teszi a gyors keresést, beszúrást és törlést.



🌲 Alapdefiníció

A bináris keresőfa egy rekurzív adatszerkezet, amelyben minden csomópont:

  1. Tartalmaz egy kulcsértéket (és esetleg egyéb adatot),
  2. Rendelkezik legfeljebb két gyermekkel: bal és jobb,
  3. Kielégíti a következő keresési feltételt:

Bal gyermekek értékei kisebbek, Jobb gyermekek értékei nagyobbak, mint a szülőé.


📐 Példa

BST a következő számokra: 8, 3, 10, 1, 6, 14, 4, 7, 13

        8
       / \
      3   10
     / \    \
    1   6    14
       / \   /
      4   7 13

🔍 Alapműveletek

Művelet Leírás Időkomplexitás (átlag / legrosszabb)
search(x) Egy érték keresése O(log n) / O(n)
insert(x) Új érték beszúrása O(log n) / O(n)
delete(x) Adott érték törlése O(log n) / O(n)
min() Minimum érték keresése (bal szél) O(log n) / O(n)
max() Maximum érték keresése (jobb szél) O(log n) / O(n)

💡 Megjegyzés: A legrosszabb eset akkor fordul elő, ha a fa kiegyensúlyozatlan (pl. lánc, mint egy lista).


🛠️ C++ példa – egyszerű BST implementáció

struct Node {
    int data;
    Node* left;
    Node* right;

    Node(int val) : data(val), left(nullptr), right(nullptr) {}
};

Node* insert(Node* root, int key) {
    if (!root) return new Node(key);
    if (key < root->data)
        root->left = insert(root->left, key);
    else
        root->right = insert(root->right, key);
    return root;
}

bool search(Node* root, int key) {
    if (!root) return false;
    if (key == root->data) return true;
    if (key < root->data)
        return search(root->left, key);
    else
        return search(root->right, key);
}

🧠 További jellemzők

  • A közép sorrendű bejárás (in-order traversal) mindig növekvő sorrendben adja vissza az elemeket.
  • Könnyen bővíthető további funkciókkal (pl. keresési intervallum, alsó/felső határ).



🔄 Törlés (delete(x))

3 eset lehetséges:

  1. Nincs gyerek: egyszerűen törölhető.
  2. Egy gyerek: a szülő az egyetlen gyerekre mutat.
  3. Két gyerek: a legkisebb jobb oldali vagy legnagyobb bal oldali csomópont kerül a helyére.



📉 Hátrányok

  • Nem garantált a kiegyensúlyozottság → romolhat a teljesítmény (O(n)).
  • Speciális fák (AVL, Red-Black) szükségesek, ha garantált teljesítmény kell.



📚 Alkalmazások

  • Dinamikus keresési rendszerek
  • Fájlrendszerek, adatbázis indexelés
  • Auto-complete és szótárkezelés
  • Sorrendezés (in-order traversal)



✅ Összefoglalás

Tulajdonság BST
Sorrendiség Igen (bal < gyökér < jobb)
Átlagos keresés O(log n)
Legrosszabb eset O(n) (kiegyensúlyozatlan)
Memóriahasználat O(n)
Használat Gyors keresés, rendezés