Arbori binari - profs.info.uaic.rosd/curs/curs-05.pdf · I Arborele vid (f ar a nici un nod) este...
Embed Size (px)
Transcript of Arbori binari - profs.info.uaic.rosd/curs/curs-05.pdf · I Arborele vid (f ar a nici un nod) este...

Arbori binari
SD 2019/2020

Continut
Arbori
Arbori binari (ArbBin)
Aplicat, ie: reprezentarea expresiilor ca arbori
FII, UAIC Curs 5 SD 2019/2020 2 / 37

Arbori: definit, ie recursiva
A =
{Λ – arborele vid,(r , {A1, · · · ,Ak}), r element s, i A1, · · · ,Ak arbori.
A = Λ sau
A1 A2
. . .Ak
r
Daca A este ordonat (planar), atunci1
2 36=
1
3 2
FII, UAIC Curs 5 SD 2019/2020 3 / 37

Arbori: definit, ie recursiva
A =
{Λ – arborele vid,(r , {A1, · · · ,Ak}), r element s, i A1, · · · ,Ak arbori.
A = Λ sau
A1 A2
. . .Ak
r
Daca A este ordonat (planar), atunci1
2 36=
1
3 2
FII, UAIC Curs 5 SD 2019/2020 3 / 37

Arbori: definit, ie recursiva
A =
{Λ – arborele vid,(r , {A1, · · · ,Ak}), r element s, i A1, · · · ,Ak arbori.
A = Λ sau
A1 A2
. . .Ak
r
Daca A este ordonat (planar), atunci1
2 36=
1
3 2
FII, UAIC Curs 5 SD 2019/2020 3 / 37

Arbori: terminologie
I radacina: nodul fara parinte.
I nod intern: nod cu cel put, in un fiu.
I nod extern (frunza): nod fara fii.
I descendent, ii unui nod: fii, nepot, i, etc.
I frat, i: toate celelalte noduri avandacelas, i parinte.
I subarbore: arborele format dintr-unnod s, i descendent, ii sai.
subarbore
A
B C D
E F G H
I J K
FII, UAIC Curs 5 SD 2019/2020 4 / 37

Arbori: terminologie
I adancimea uni nod x :
adancime(x) =
{0, x este radacina,1 + adancime(parinte(x)), ın caz contrar.
I ınalt, imea unui arbore:adancimea maxima a nodurilorarborelui.
I ınalt, imea unui nod: distant,a dela nod la cel mai departatdescendent al sau.
A
B C D
E F G H
I J K
0 –
1 –
2 –
3 –
FII, UAIC Curs 5 SD 2019/2020 5 / 37

Continut
Arbori
Arbori binari (ArbBin)
Aplicat, ie: reprezentarea expresiilor ca arbori
FII, UAIC Curs 5 SD 2019/2020 6 / 37

Tipul abstract ArbBin
Obiecte: arbori binari.
Un arbore binar este o colect, ie de noduri cu proprietat, ile:
I orice nod are 0, 1 sau 2 succesori (fii, copii).
I orice nod, exceptand unul singur — radacina — are un singur nodpredecesor (tata, parinte).
I radacina nu are predecesori.
I fii sunt ordonat, i: fiul stang, fiul drept. Daca un nod are un singur fiu,atunci trebuie ment, ionat care.
I nodurile fara fii formeaza frontiera arborelui.
FII, UAIC Curs 5 SD 2019/2020 7 / 37

Arbori binari: exemplu
C
E G
K A M D
B L F I
H
radacina
fiu stang fiu drept
subarbore stang
FII, UAIC Curs 5 SD 2019/2020 8 / 37

Arbori binari: exemplu
C
E G
K A M D
B L F I
H
radacina
fiu stang fiu drept
subarbore stang
FII, UAIC Curs 5 SD 2019/2020 8 / 37

Arbori binari: exemplu
C
E G
K A M D
B L F I
H
radacina
fiu stang fiu drept
subarbore stang
FII, UAIC Curs 5 SD 2019/2020 8 / 37

Arbori binari: definit, ie recursiva
I Arborele vid (fara nici un nod) este arbore binar.
I Daca v este un nod s, i t1 s, i t2 sunt arbori binari, atunci arborele careare pe v ca radacina, t1 subarbore stang al radacinii s, i t2 subarboredrept al radacinii este arbore binar.
t1 t2
v
FII, UAIC Curs 5 SD 2019/2020 9 / 37

Arbori binari: proprietat, i
Notat, ii:
I n – numarul de noduri din arbore.
I ne – numarul de noduri externe.
I ni – numarul de noduri interne.
I h – ınalt, imea arborelui.
h + 1 ≤ n ≤ 2h+1 − 1; log2 (n + 1)− 1 ≤ h ≤ n − 1
1 ≤ ne ≤ 2h; h ≤ ni ≤ 2h − 1
FII, UAIC Curs 5 SD 2019/2020 10 / 37

Arbori binari: proprietat, i
I Arbore propriu: fiecare nod intern are exact doi fii.
2h + 1 ≤ n ≤ 2h+1 − 1;log2 (n + 1) − 1 ≤ h ≤ (n − 1)/2
h + 1 ≤ ne ≤ 2h;h ≤ ni ≤ 2h − 1ne = ni + 1
I Arbore complet: arbore propriu ın care frunzele au aceeasi adancime.
nivelul i are 2i noduri;n = 2h+1 − 1 = 2ne − 1
FII, UAIC Curs 5 SD 2019/2020 11 / 37

ArbBin – operat, ii
insereaza()
I intrare:
– un arbore binar t;– adresa unui nod cu cel mult un fiu (tatal noului nod);– tipul fiului adagat (stanga, dreapta);– informatia e din noul nod.
I ies, ire:
– arborele t la care s-a adaugat un nod ce memoreaza e;noul nod nu are fii.
FII, UAIC Curs 5 SD 2019/2020 12 / 37

ArbBin: inserare - exemplu
C
E G
K A M D
B L F I
Hinsereaza X ca fiu stang a lui K
X
insereaza Y ca fiu drept a lui LY
FII, UAIC Curs 5 SD 2019/2020 13 / 37

ArbBin: inserare - exemplu
C
E G
K A M D
B L F I
Hinsereaza X ca fiu stang a lui K
X
insereaza Y ca fiu drept a lui LY
FII, UAIC Curs 5 SD 2019/2020 13 / 37

ArbBin: inserare - exemplu
C
E G
K A M D
B L F I
Hinsereaza X ca fiu stang a lui K
X
insereaza Y ca fiu drept a lui L
Y
FII, UAIC Curs 5 SD 2019/2020 13 / 37

ArbBin: inserare - exemplu
C
E G
K A M D
B L F I
Hinsereaza X ca fiu stang a lui K
X
insereaza Y ca fiu drept a lui LY
FII, UAIC Curs 5 SD 2019/2020 13 / 37

ArbBin – operat, ii
elimina()
I intrare:
– un arbore binar t;– adresa unui nod fara fii si adresa nodului parinte.
I ies, ire:
– arborele t din care s-a eliminat nodul dat(de pe frontiera).
FII, UAIC Curs 5 SD 2019/2020 14 / 37

ArbBin: eliminare - exemplu
C
E G
K A M D
B L F I
H
FII, UAIC Curs 5 SD 2019/2020 15 / 37

ArbBin: eliminare - exemplu
C
E G
K A M D
B F I
H
FII, UAIC Curs 5 SD 2019/2020 16 / 37

ArbBin: eliminare - exemplu
C
E G
K A M D
B F I
H
FII, UAIC Curs 5 SD 2019/2020 17 / 37

ArbBin – parcurgerea preordine
parcurgerePreordine()
I intrare:
– un arbore binar t;– o procedura viziteaza().
I ies, ire:– arborele t, dar cu nodurile procesate cu viziteaza() ın ordinea
* (R) – radacina* (S) – subarborele stanga* (D) – subarborele dreapta
FII, UAIC Curs 5 SD 2019/2020 18 / 37

Parcurgere preordine - exemplu
C
E G
K A M D
B L F I
H
C
C
E
E
K
K
B
B
HH
A
A
L
L
F
F
G
G
M
M
D
D
I
I
FII, UAIC Curs 5 SD 2019/2020 19 / 37

Parcurgere preordine - exemplu
C
E G
K A M D
B L F I
HC
C
E
E
K
K
B
B
HH
A
A
L
L
F
F
G
G
M
M
D
D
I
I
FII, UAIC Curs 5 SD 2019/2020 19 / 37

Parcurgere preordine - exemplu
C
E G
K A M D
B L F I
HC
C
E
E
K
K
B
B
HH
A
A
L
L
F
F
G
G
M
M
D
D
I
I
FII, UAIC Curs 5 SD 2019/2020 19 / 37

Parcurgere preordine - exemplu
C
E G
K A M D
B L F I
HC
C
E
E
K
K
B
B
HH
A
A
L
L
F
F
G
G
M
M
D
D
I
I
FII, UAIC Curs 5 SD 2019/2020 19 / 37

Parcurgere preordine - exemplu
C
E G
K A M D
B L F I
HC
C
E
E
K
K
B
B
HH
A
A
L
L
F
F
G
G
M
M
D
D
I
I
FII, UAIC Curs 5 SD 2019/2020 19 / 37

Parcurgere preordine - exemplu
C
E G
K A M D
B L F I
HC
C
E
E
K
K
B
B
HH
A
A
L
L
F
F
G
G
M
M
D
D
I
I
FII, UAIC Curs 5 SD 2019/2020 19 / 37

Parcurgere preordine - exemplu
C
E G
K A M D
B L F I
HC
C
E
E
K
K
B
B
HH
A
A
L
L
F
F
G
G
M
M
D
D
I
I
FII, UAIC Curs 5 SD 2019/2020 19 / 37

Parcurgere preordine - exemplu
C
E G
K A M D
B L F I
HC
C
E
E
K
K
B
B
HH
A
A
L
L
F
F
G
G
M
M
D
D
I
I
FII, UAIC Curs 5 SD 2019/2020 19 / 37

Parcurgere preordine - exemplu
C
E G
K A M D
B L F I
HC
C
E
E
K
K
B
B
HH
A
A
L
L
F
F
G
G
M
M
D
D
I
I
FII, UAIC Curs 5 SD 2019/2020 19 / 37

Parcurgere preordine - exemplu
C
E G
K A M D
B L F I
HC
C
E
E
K
K
B
B
HH
A
A
L
L
F
F
G
G
M
M
D
D
I
I
FII, UAIC Curs 5 SD 2019/2020 19 / 37

Parcurgere preordine - exemplu
C
E G
K A M D
B L F I
HC
C
E
E
K
K
B
B
HH
A
A
L
L
F
F
G
G
M
M
D
D
I
I
FII, UAIC Curs 5 SD 2019/2020 19 / 37

Parcurgere preordine - exemplu
C
E G
K A M D
B L F I
HC
C
E
E
K
K
B
B
HH
A
A
L
L
F
F
G
G
M
M
D
D
I
I
FII, UAIC Curs 5 SD 2019/2020 19 / 37

Parcurgere preordine - exemplu
C
E G
K A M D
B L F I
HC
C
E
E
K
K
B
B
HH
A
A
L
L
F
F
G
G
M
M
D
D
I
I
FII, UAIC Curs 5 SD 2019/2020 19 / 37

ArbBin – parcurgerea inordine
parcurgereInordine()
I intrare:
– un arbore binar t;– o procedura viziteaza().
I ies, ire:– arborele t, dar cu nodurile procesate cu viziteaza() ın ordinea
* (S) – subarborele stanga* (R) – radacina* (D) – subarborele dreapta
FII, UAIC Curs 5 SD 2019/2020 20 / 37

Parcurgere inordine - exemplu
C
E G
K A M D
B L F I
H
K
K
HH
B
B
E
E
L
L
A
A
F
F
C
C
M
M
G
G
I
I
D
D
FII, UAIC Curs 5 SD 2019/2020 21 / 37

Parcurgere inordine - exemplu
C
E G
K A M D
B L F I
HK
K
HH
B
B
E
E
L
L
A
A
F
F
C
C
M
M
G
G
I
I
D
D
FII, UAIC Curs 5 SD 2019/2020 21 / 37

Parcurgere inordine - exemplu
C
E G
K A M D
B L F I
HK
K
HH
B
B
E
E
L
L
A
A
F
F
C
C
M
M
G
G
I
I
D
D
FII, UAIC Curs 5 SD 2019/2020 21 / 37

Parcurgere inordine - exemplu
C
E G
K A M D
B L F I
HK
K
HH
B
B
E
E
L
L
A
A
F
F
C
C
M
M
G
G
I
I
D
D
FII, UAIC Curs 5 SD 2019/2020 21 / 37

Parcurgere inordine - exemplu
C
E G
K A M D
B L F I
HK
K
HH
B
B
E
E
L
L
A
A
F
F
C
C
M
M
G
G
I
I
D
D
FII, UAIC Curs 5 SD 2019/2020 21 / 37

Parcurgere inordine - exemplu
C
E G
K A M D
B L F I
HK
K
HH
B
B
E
E
L
L
A
A
F
F
C
C
M
M
G
G
I
I
D
D
FII, UAIC Curs 5 SD 2019/2020 21 / 37

Parcurgere inordine - exemplu
C
E G
K A M D
B L F I
HK
K
HH
B
B
E
E
L
L
A
A
F
F
C
C
M
M
G
G
I
I
D
D
FII, UAIC Curs 5 SD 2019/2020 21 / 37

Parcurgere inordine - exemplu
C
E G
K A M D
B L F I
HK
K
HH
B
B
E
E
L
L
A
A
F
F
C
C
M
M
G
G
I
I
D
D
FII, UAIC Curs 5 SD 2019/2020 21 / 37

Parcurgere inordine - exemplu
C
E G
K A M D
B L F I
HK
K
HH
B
B
E
E
L
L
A
A
F
F
C
C
M
M
G
G
I
I
D
D
FII, UAIC Curs 5 SD 2019/2020 21 / 37

Parcurgere inordine - exemplu
C
E G
K A M D
B L F I
HK
K
HH
B
B
E
E
L
L
A
A
F
F
C
C
M
M
G
G
I
I
D
D
FII, UAIC Curs 5 SD 2019/2020 21 / 37

Parcurgere inordine - exemplu
C
E G
K A M D
B L F I
HK
K
HH
B
B
E
E
L
L
A
A
F
F
C
C
M
M
G
G
I
I
D
D
FII, UAIC Curs 5 SD 2019/2020 21 / 37

Parcurgere inordine - exemplu
C
E G
K A M D
B L F I
HK
K
HH
B
B
E
E
L
L
A
A
F
F
C
C
M
M
G
G
I
I
D
D
FII, UAIC Curs 5 SD 2019/2020 21 / 37

Parcurgere inordine - exemplu
C
E G
K A M D
B L F I
HK
K
HH
B
B
E
E
L
L
A
A
F
F
C
C
M
M
G
G
I
I
D
D
FII, UAIC Curs 5 SD 2019/2020 21 / 37

ArbBin – parcurgerea postordine
parcurgerePostordine()
I intrare:
– un arbore binar t;– o procedura viziteaza().
I ies, ire:– arborele t, dar cu nodurile procesate cu viziteaza() ın ordinea
* (S) – subarborele stanga* (D) – subarborele dreapta* (R) – radacina
FII, UAIC Curs 5 SD 2019/2020 22 / 37

Parcurgere postordine - exemplu
C
E G
K A M D
B L F I
H
HH
B
B
K
K
L
L
F
F
A
A
E
E
M
M
I
I
D
D
G
G
C
C
FII, UAIC Curs 5 SD 2019/2020 23 / 37

Parcurgere postordine - exemplu
C
E G
K A M D
B L F I
HH
H
B
B
K
K
L
L
F
F
A
A
E
E
M
M
I
I
D
D
G
G
C
C
FII, UAIC Curs 5 SD 2019/2020 23 / 37

Parcurgere postordine - exemplu
C
E G
K A M D
B L F I
HH
HB
B
K
K
L
L
F
F
A
A
E
E
M
M
I
I
D
D
G
G
C
C
FII, UAIC Curs 5 SD 2019/2020 23 / 37

Parcurgere postordine - exemplu
C
E G
K A M D
B L F I
HH
HB
B
K
K
L
L
F
F
A
A
E
E
M
M
I
I
D
D
G
G
C
C
FII, UAIC Curs 5 SD 2019/2020 23 / 37

Parcurgere postordine - exemplu
C
E G
K A M D
B L F I
HH
HB
B
K
K
L
L
F
F
A
A
E
E
M
M
I
I
D
D
G
G
C
C
FII, UAIC Curs 5 SD 2019/2020 23 / 37

Parcurgere postordine - exemplu
C
E G
K A M D
B L F I
HH
HB
B
K
K
L
L
F
F
A
A
E
E
M
M
I
I
D
D
G
G
C
C
FII, UAIC Curs 5 SD 2019/2020 23 / 37

Parcurgere postordine - exemplu
C
E G
K A M D
B L F I
HH
HB
B
K
K
L
L
F
F
A
A
E
E
M
M
I
I
D
D
G
G
C
C
FII, UAIC Curs 5 SD 2019/2020 23 / 37

Parcurgere postordine - exemplu
C
E G
K A M D
B L F I
HH
HB
B
K
K
L
L
F
F
A
A
E
E
M
M
I
I
D
D
G
G
C
C
FII, UAIC Curs 5 SD 2019/2020 23 / 37

Parcurgere postordine - exemplu
C
E G
K A M D
B L F I
HH
HB
B
K
K
L
L
F
F
A
A
E
E
M
M
I
I
D
D
G
G
C
C
FII, UAIC Curs 5 SD 2019/2020 23 / 37

Parcurgere postordine - exemplu
C
E G
K A M D
B L F I
HH
HB
B
K
K
L
L
F
F
A
A
E
E
M
M
I
I
D
D
G
G
C
C
FII, UAIC Curs 5 SD 2019/2020 23 / 37

Parcurgere postordine - exemplu
C
E G
K A M D
B L F I
HH
HB
B
K
K
L
L
F
F
A
A
E
E
M
M
I
I
D
D
G
G
C
C
FII, UAIC Curs 5 SD 2019/2020 23 / 37

Parcurgere postordine - exemplu
C
E G
K A M D
B L F I
HH
HB
B
K
K
L
L
F
F
A
A
E
E
M
M
I
I
D
D
G
G
C
C
FII, UAIC Curs 5 SD 2019/2020 23 / 37

Parcurgere postordine - exemplu
C
E G
K A M D
B L F I
HH
HB
B
K
K
L
L
F
F
A
A
E
E
M
M
I
I
D
D
G
G
C
C
FII, UAIC Curs 5 SD 2019/2020 23 / 37

ArbBin – parcurgerea BFS (pe latime)
parcurgereBFS()
I intrare:
– un arbore binar t;– o procedura viziteaza().
I ies, ire:
– arborele t, dar cu nodurile procesate cu viziteaza() ın ordinea BFS(pe latime / pe niveluri).
FII, UAIC Curs 5 SD 2019/2020 24 / 37

Parcurgere BFS - exemplu
C
E G
K A M D
B L F I
H
C
C
E
E
G
G
K
K
A
A
M
M
D
D
B
B
L
L
F
F
I
I
HH
FII, UAIC Curs 5 SD 2019/2020 25 / 37

Parcurgere BFS - exemplu
C
E G
K A M D
B L F I
HC
C
E
E
G
G
K
K
A
A
M
M
D
D
B
B
L
L
F
F
I
I
HH
FII, UAIC Curs 5 SD 2019/2020 25 / 37

Parcurgere BFS - exemplu
C
E G
K A M D
B L F I
HC
C
E
E
G
G
K
K
A
A
M
M
D
D
B
B
L
L
F
F
I
I
HH
FII, UAIC Curs 5 SD 2019/2020 25 / 37

Parcurgere BFS - exemplu
C
E G
K A M D
B L F I
HC
C
E
E
G
G
K
K
A
A
M
M
D
D
B
B
L
L
F
F
I
I
HH
FII, UAIC Curs 5 SD 2019/2020 25 / 37

Parcurgere BFS - exemplu
C
E G
K A M D
B L F I
HC
C
E
E
G
G
K
K
A
A
M
M
D
D
B
B
L
L
F
F
I
I
HH
FII, UAIC Curs 5 SD 2019/2020 25 / 37

Parcurgere BFS - exemplu
C
E G
K A M D
B L F I
HC
C
E
E
G
G
K
K
A
A
M
M
D
D
B
B
L
L
F
F
I
I
HH
FII, UAIC Curs 5 SD 2019/2020 25 / 37

Parcurgere BFS - exemplu
C
E G
K A M D
B L F I
HC
C
E
E
G
G
K
K
A
A
M
M
D
D
B
B
L
L
F
F
I
I
HH
FII, UAIC Curs 5 SD 2019/2020 25 / 37

Parcurgere BFS - exemplu
C
E G
K A M D
B L F I
HC
C
E
E
G
G
K
K
A
A
M
M
D
D
B
B
L
L
F
F
I
I
HH
FII, UAIC Curs 5 SD 2019/2020 25 / 37

Parcurgere BFS - exemplu
C
E G
K A M D
B L F I
HC
C
E
E
G
G
K
K
A
A
M
M
D
D
B
B
L
L
F
F
I
I
HH
FII, UAIC Curs 5 SD 2019/2020 25 / 37

Parcurgere BFS - exemplu
C
E G
K A M D
B L F I
HC
C
E
E
G
G
K
K
A
A
M
M
D
D
B
B
L
L
F
F
I
I
HH
FII, UAIC Curs 5 SD 2019/2020 25 / 37

Parcurgere BFS - exemplu
C
E G
K A M D
B L F I
HC
C
E
E
G
G
K
K
A
A
M
M
D
D
B
B
L
L
F
F
I
I
HH
FII, UAIC Curs 5 SD 2019/2020 25 / 37

Parcurgere BFS - exemplu
C
E G
K A M D
B L F I
HC
C
E
E
G
G
K
K
A
A
M
M
D
D
B
B
L
L
F
F
I
I
HH
FII, UAIC Curs 5 SD 2019/2020 25 / 37

Parcurgere BFS - exemplu
C
E G
K A M D
B L F I
HC
C
E
E
G
G
K
K
A
A
M
M
D
D
B
B
L
L
F
F
I
I
HH
FII, UAIC Curs 5 SD 2019/2020 25 / 37

ArbBin: implementarea cu structuri ınlantuite
C • •
E • • G • •
K • • A • • M • • D • •
B • • L • • F • • I • •
H • •
FII, UAIC Curs 5 SD 2019/2020 26 / 37

ArbBin: structura unui nod
Un nod v (aflat la adresa de memorie v) este o structura cu trei campuri:
I v->inf – informatia memorata ın nod;
I v->stg – adresa fiului stanga;
I v->drp – adresa fiului dreapta.
FII, UAIC Curs 5 SD 2019/2020 27 / 37

ArbBin: parcurgePreordine()
procedure parcurgePreordine(v , viziteaza)begin
if (v == NULL) thenreturn
elseviziteaza(v)parcurgePreordine(v− > stg , viziteaza)parcurgePreordine(v− > drp, viziteaza)
end
FII, UAIC Curs 5 SD 2019/2020 28 / 37

Implementarea parcurgerii BFS
C
E G
K A M D
BFS =
Coada = ( )C
C
C
C E
E
G
G
E
E K
K
A
A
G
G M
M
D
D
K
K
A
A
M
M
D
D
FII, UAIC Curs 5 SD 2019/2020 29 / 37

Implementarea parcurgerii BFS
C
E G
K A M D
BFS =
Coada = ( )
C
C
C
C E
E
G
G
E
E K
K
A
A
G
G M
M
D
D
K
K
A
A
M
M
D
D
FII, UAIC Curs 5 SD 2019/2020 29 / 37

Implementarea parcurgerii BFS
C
E G
K A M D
BFS =
Coada = ( )C
C
C
C E
E
G
G
E
E K
K
A
A
G
G M
M
D
D
K
K
A
A
M
M
D
D
FII, UAIC Curs 5 SD 2019/2020 29 / 37

Implementarea parcurgerii BFS
C
E G
K A M D
BFS =
Coada = ( )C
C
C
C E
E
G
G
E
E K
K
A
A
G
G M
M
D
D
K
K
A
A
M
M
D
D
FII, UAIC Curs 5 SD 2019/2020 29 / 37

Implementarea parcurgerii BFS
C
E G
K A M D
BFS =
Coada = ( )C
C
C
C E
E
G
G
E
E K
K
A
A
G
G M
M
D
D
K
K
A
A
M
M
D
D
FII, UAIC Curs 5 SD 2019/2020 29 / 37

Implementarea parcurgerii BFS
C
E G
K A M D
BFS =
Coada = ( )C
C
C
C E
E
G
G
E
E K
K
A
A
G
G M
M
D
D
K
K
A
A
M
M
D
D
FII, UAIC Curs 5 SD 2019/2020 29 / 37

Implementarea parcurgerii BFS
C
E G
K A M D
BFS =
Coada = ( )C
C
C
C E
E
G
G
E
E K
K
A
A
G
G M
M
D
D
K
K
A
A
M
M
D
D
FII, UAIC Curs 5 SD 2019/2020 29 / 37

Implementarea parcurgerii BFS
C
E G
K A M D
BFS =
Coada = ( )C
C
C
C E
E
G
G
E
E K
K
A
A
G
G M
M
D
D
K
K
A
A
M
M
D
D
FII, UAIC Curs 5 SD 2019/2020 29 / 37

Implementarea parcurgerii BFS
C
E G
K A M D
BFS =
Coada = ( )C
C
C
C E
E
G
G
E
E K
K
A
A
G
G M
M
D
D
K
K
A
A
M
M
D
D
FII, UAIC Curs 5 SD 2019/2020 29 / 37

Implementarea parcurgerii BFS
C
E G
K A M D
BFS =
Coada = ( )C
C
C
C E
E
G
G
E
E K
K
A
A
G
G M
M
D
D
K
K
A
A
M
M
D
D
FII, UAIC Curs 5 SD 2019/2020 29 / 37

Implementarea parcurgerii BFS
procedure parcurgeBFS(t, viziteaza)begin
if (t == NULL) thenreturn
elseCoada ← coadaVida()insereaza(Coada, t)while not esteVida(Coada) do
citeste(Coada, v)viziteaza(v)if (v− > stg ! = NULL) then
insereaza(Coada, v− > stg)if (v− > drp ! = NULL) then
insereaza(Coada, v− > drp)elimina(Coada)
end
FII, UAIC Curs 5 SD 2019/2020 30 / 37

ArbBin: implementarea cu liste
I tablou de parinti: reprezentarea relatiei“parinte”.
I Avantaje:
- simplitate;- acces usor de la un nod spre radacina;- economie de memorie.
I Inconveniente:
- acces dificil de la radacina sprenoduri.
A0
B1 D2
C3 E4 J5 K6
M7 N8 W9
-1 0 0 1 1 2 2 4 4 50 1 2 3 4 5 6 7 8 9
FII, UAIC Curs 5 SD 2019/2020 31 / 37

ArbBin: implementarea cu tablouri
I Nodurile sunt memorate ıntr-un tablou.
I Indexul unui nod este:
- index(radacina) = 0
- index(x) = 2*index(parinte(x))+1,daca x este fiu stang
- index(x) = 2*index(parinte(x))+2,daca x este fiu drept
A0
B1 D2
C3 E4 J5 K6
M9 N 10 W 12
A B D C E J K M N W0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
FII, UAIC Curs 5 SD 2019/2020 32 / 37

Continut
Arbori
Arbori binari (ArbBin)
Aplicat, ie: reprezentarea expresiilor ca arbori
FII, UAIC Curs 5 SD 2019/2020 33 / 37

Aplicatie: expresii ıntregi
I Expresii ıntregi
– definitie;– exemple.
I Reprezentarea expresiilor ca arbori
– similaritati ıntre cele doua definitii;– arborele asociat unei expresii;– notatiile prefixate, infixate si postfixate si parcurgeri ale arborilor.
FII, UAIC Curs 5 SD 2019/2020 34 / 37

Definitia expresiilor ıntregi
<int> ::= ... -2 | -1 | 0 | 1 | 2 ...
<op_bin> ::= + | - | * | / | %
<exr_int> ::= <int>
| (<exp_int>)
| <exp_int> <op_bin> <exp_int>
I reguli de precedenta12− 5 ∗ 2 este (12− 5) ∗ 2 sau 12− (5 ∗ 2) ?
I reguli de asociere15/4/2 este (15/4)/2 sau 15/(4/2)?15/4 ∗ 2 este (15/4) ∗ 2 sau 15/(4 ∗ 2)?
FII, UAIC Curs 5 SD 2019/2020 35 / 37

Expresiile reprezentate ca arbori
−12 + 17 ∗ 5–(43 + 34/21 ∗ 66)
–
+
-12 *
17 5
+
43 *
/
34 21
66
FII, UAIC Curs 5 SD 2019/2020 36 / 37

Expresiile reprezentate ca arbori
−12 + 17 ∗ 5–(43 + 34/21 ∗ 66)
–
+
-12 *
17 5
+
43 *
/
34 21
66
FII, UAIC Curs 5 SD 2019/2020 36 / 37

Notatiile postfixate si prefixate
I Notatia postfixata se obtine prin parcurgerea postordine−12, 17, 5, ∗,+, 43, 34, 21, /, 66, ∗,+,−
I Notatia prefixata se obtine prin parcurgerea preordine−,+,−12, ∗, 17, 5,+, 43, ∗, /, 34, 21, 66
–
+
-12 *
17 5
+
43 *
/
34 21
66
FII, UAIC Curs 5 SD 2019/2020 37 / 37