Laboratorul 5: Arbori de căutare
1. Obiectivele laboratorului
2. Definiție
Un arbore binar de căutare este un arbore binar care are în plus următoarele proprietăți:
Cheile stocate în noduri (informația utilă) aparțin unei mulțimi peste care există o relație de ordine.
Cheia dintr-un nod oarecare este mai mare decât cheile tuturor nodurilor din subarborele stâng si este mai mică decât cheile tuturor nodurilor ce compun subarborele drept.
Astfel,valoarea maximă dintr-un arbore binar de căutare se află în nodul din extremitatea dreaptă și se determină prin coborârea pe subarborele drept, iar valoarea minimă se află în nodul din extremitatea stângă.
Parcurgerea inordine produce o secvență ordonată crescător a cheilor din nodurile arborelui.
3. Operații
Inserarea unui nod se face, în funcție de rezultatul comparației cheilor,în subarborele stâng sau drept. Dacă arborele este vid, se creează un nod care devine nodul rădăcină al arborelui. În caz contrar, cheia se inserează ca fiu stâng sau fiu drept al unui nod din arbore.
4. Exerciții
Se dă un vector cu n întregi (citit din fișierul input.txt, câte un număr pe fiecare linie). Scrieţi o funcţie care să creeze un arbore binar de căutare cu valorile din vector. Scrieţi o funcţie care verifică dacă arborele este binar de căutare. Scrieţi o funcţie care verifică dacă o valoare (generată aleator) dată se află în arbore (căutare). Acelaşi arbore – inserare (şi să rămână arbore de căutare). Acelaşi arbore – ştergere (şi să rămână arbore de căutare). [80% nota]
Același enunț ca ex. 1 dar acum păstrați arborele echilibrat (AVL). [20% nota]
5. Probleme opționale, de interviu
Se dă V (un vector de n întregi) şi P (un vector de taţi de lungime n). Verificaţi dacă se poate construi un arbore binar de căutare cu valorile din V şi legăturile copil-părinte din P.
Propuneți soluții eficiente pentru a programa un program de tip “auto-complete” pentru o listă de cuvinte (în timp ce tastați se afișează cele mai probabile 3 cuvinte la care vă referiți). Hint: verificați/căutați trie sau arbori de prefixe.