Professional Documents
Culture Documents
Un arbore binar de înălțimea h are cel mult 2h noduri pe ultimul nivel. Ultimul nivel
este h.
Dacă a este numărul nodurilor terminale și c este numărul nodurilor care au exact 2
descendenți atunci a=c+1
Modalități de reprezentare
• Arborii binari se reprezintă prin referințe descendente. Astfel, pentru fiecare nod
trebuie să se cunoască nodul care constituie vârful subarborelui stâng și nodul care
reprezintă vârful subarborelui drept.
1. Reprezentarea cu ajutorul vectorului:
Un arbore binar poate fi reprezentat cu ajutorul a doivectori: st (de la stânga) și dr (de la
dreapta)
Pentru fiecare nod i dintre cele n, st[i] reține numărul de ordine al nodului stâng subordonat
de i, ar dr[i] reține numărul de ordine al nodului drept subordonat de i. Dacă nu există nod
subordonat atunci se reține 0.
1 2 3 4 5 6
1
st 2 4 0 0 0 0
2 3
dr 3 5 6 0 0 0
4 5 6
Modalități de reprezentare
• 2. Reprezentarea în HEAP:
• Fiecare nod al arborelui este reprezentat în HEAP de o înregistrare cu următoarea
structură:
type arbore=^Nod; 1
Nod=record
nr: integer;
2 nil 3
stg,drt : arbore;
end;
nil 4 nil nil 5 nil nil 6 nil
Modalități de parcurgere
• Parcurgerea în adâncime:
Parcurgere în inordine (SVD) – se parcurge mai întâi subarborele stâng, apoi vârful, apoi
subarborele drept.
Parcurgerea în preordine (VSD) – se parcurge mai întâi vârful, apoi subarborele stâng, apoi
subarborele drept.
Parcurgere în postordine (SDV) – se parcurge mai întâi subarborele stâng, apoi subarborele
drept, apoi vârful.
SVD: 4 2 5 1 3 6 1
VSD: 1 2 4 5 3 6 2 3
4 5 6
SDV: 4 5 2 6 3 1
Modalități de parcurgere
• Parcurgerea în lățime :
Se vizitează întâi vârful, apoi subarborele stâng al vârfului, apoi cel drept şi se continuă în
acest mod vizitând nodurile de pe fiecare nivel de la stânga la dreapta.
1
123456
2 3
4 5 6
Operații
• Inserarea unui nod frunză:
1. Se alocă zona de memorie pentru nodul temporal ce urmează să se insereze în arbore.
2. Se atribuie valori variabilelor ce formează acest nod
3. Se atribuie valoarea NIL adreselor pentru noul nod creat
4. Unde se înserează nodul?
Dacă arborele este vid, atunci acest nod va fi primul nod al arborelui și facem legătura. Procesul se
oprește. În caz contrar, se determină poziția în care trebuie inserat noul nod. Presupunem că această
adresă este menținută de o variabilă nod. De asemenea, criteriul folosit mai sus va indica dacă
inserarea se va face în nodul stâng sau în nodul drept al nodului, sau operația nu poate fi efectuată. În
caz că inserarea nu poate fi efectuată, atunci eliberăm zona de memorie a cărei adresă se află în
variabila temporală și procesul se termină;
5. Dacă inserarea se face în nodul stâng, atunci se face atribuirea și procesul se termină
6. Dacă inserarea se face în nodul drept, atunci se face atribuirea și procesul se termină
Operații (continuare)
Accsul la un nod
Presupune existența unui criteriu care săpermită determinarea nodului respectiv (descris la
p.4)
Parcurgerea
SVD, VSD, SDV
Ștergerea
Este necesarăparcurgerea lui și ștergerea fiecărui nod. Arborele va fi parcurs in postordine
(SDV) deoarece rădăcina arborelui trebuie ștearsă ultima.
Programul ArbRec ilustreaza cele trei moduri de parcurgere prezentate (procedurile VSD, SVD,
SDV) precum si generarea unui arbore (procedura Gener_Arb), aflarea înaltimii unui arbore
(procedura Inaltime) si aflarea numarului de noduri dintr-un arbore (procedura NumarNod).