Laboratorul 5: Arbori de căutare

1. Obiectivele laboratorului

  • Înțelegerea structurii și proprietăților unui arbore binar de căutare
  • Realizarea diferitelor operații folosind arborii binari de căutare

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

  • Căutarea unei chei într-un arbore binar de căutare este asemănătoare căutării binare: cheia căutată este comparată cu cheia din nodul curent (inițial nodul rădăcină). În funcție de rezultatul comparației apar trei cazuri:
    • acestea coincid ⇒ elementul a fost găsit
    • elementul căutat este mai mic decât cheia din nodul curent ⇒ căutarea continuă în subarborele stâng
    • elementul căutat este mai mare decât cheia din nodul curent ⇒ căutarea continuă in subarborele drept
  • 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.
  • Ștergerea unui nod este o operație puțin mai complicată, întrucât presupune o rearanjare a nodurilor. Pentru eliminarea unui nod dintr-un arbore binar de căutare sunt posibile următoarele cazuri:
    • nodul de șters nu există ⇒ operația se consideră încheiată
    • nodul de șters nu are succesori ⇒ este o frunză
    • nodul de șters are un singur succesor ⇒ nodul se va șterge și se refac legăturile în arbore
    • nodul de șters are doi succesori ⇒ se parcurge arborele drept, căutându-se cea mai mică valoare,mai mare decât a nodului care trebuie șters și se refac legăturile cu acesta.

4. Exerciții

  1. 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]
  2. Același enunț ca ex. 1 dar acum păstrați arborele echilibrat (AVL). [20% nota]

5. Probleme opționale, de interviu

  1. 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.
  2. 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.
sda-aa/laboratoare/06.txt · Last modified: 2021/04/05 08:13 by cristian.rusu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0