Sunteți pe pagina 1din 7

Arbore liber

Un graf conex fără cicluri se numește arbore liber.

Următoarele propoziții sunt adv:

 Un arbore cu n varfuri are n-1 muchii.


 Un arbore este un graf conex si minimal cu aceasta proprietate; daca s-ar elimina o muchie
graful nu ar mai fi conex
 Un arbore este un graf aciclic si maxima cu aceasta proprietate; daca s-ar adauga o muchie
aceasta ar avea un ciclu.
 Intre oricare doua varfuri ale unui arbore exista un lant elementar unic.

Arbori cu radacina

Intr-un arbore se poate stabili un nod special numit radacina.

5 e radacina

Se numeste ascendent al nodului x orice nod y, diferit de x, aflat pe lantul de la radacina la x;

 Radacina nu are ascendent


 Radacina este ascendent pentru fiecare nod

Daca y este ascendentul lui x si exista muchia (x, y) atunci y se numeste ascendent direct a lui x sau
tatal lui y.

 Radacina este singurul nod din arbore care nu are tata.

Un nod y este descendentul nodului x, diferit de y, daca x apartine lantului de la r(radacina) la y.

Un nod y care este descendent al nodului x se numeste fiu sau descendent direct daca in plus exista
muchia (x, y).

Se numeste frunza un nod care nu are descendenti.

Doua noduri care au acelasi tata se numesc frati.

Se numeste inaltime unui arbore lungimea maxima a unui lant de la radacina la un nod al arborelui.

Se numeste nivel sau adancimea nodului x lungimea lantului de la radacina la nodul x.

Se numeste subarbore un nod al arborelui impreuna cu tot descendentii sai.


1. 3
2. 2, 6, 3
3. 2 nu are descendenti
4. 4
5. 2,6, 7, 1
6. 3; 1 4 5; 2 6 7
7. 2
8. 4, 2, 6

Reprezentarea arborilor

Prin referinte descendente

Pentru fiecare nod se retin descendentii directi(fii).

Prin referinte ascendente

Pentru fiecare nod se memoreaza informatii despre ascendentii directi. Vom obtine un vector de tati
unde t(r)=0 iar t(k) este tatal nodului k.

1 2 3 4 5 6 7 8 9 10 11 12

T 2 3 0 5 2 4 1 9 3 1 9 11
Arbori binari

Se numeste arbore binar un arbore cu radacina in care fiecare nod cu exceptia frunzelor are cel mult
doi descedenti directi: descendentul stang si descendentul direct.

Obs: intr un arbore binar daca un nod are un singur descendent acesta este fie stang fie drept acest
lucru fiind precizat.

Proprietati:

 Intr un arbore binar cu inaltimea h exista cel mult 2h+ 1-1 noduri
 Pe fiecare nivel i se gasesc maxim 2inoduri.

Definitia recursiva a arbirelui binar

Un arbore binar este o multime finitia de noduri in care exista un nod special numit radacina iar
celelalte noduri sunt grupate in doua multimi disjuncte A1 si A2 ( A1 A2) fiecare fiind la randul lor
arbori binari.

A1 se numeste subarbore stang, iar A2 se numeste subarbore drept

Tipuri speciale de arbori binari

1. Arbore binar strict: este un arbore in care fiecare nod, cu exceptia frunzelor are exact 2
descendenti.
Proprietate: un arbore binar strict care are k frunze are numarul de noduri egal cu 2*k-1.
Proprietate: un arbore binar strict are mereu un numar impar de noduri.
2. Se numeste arbore binar plin: un arbore binar, care pe fiecare nivel k are exact 2k noduri.
Proprietate: arborele binar plin este un caz particular de arbore binar strict in care toate
frunzele sunt pe ultimul nivel.
Proprietate: un arbore binar plin cu k frunze are 2*k-1.
Proprietate: un arbore binar plin cu inaltimea h are 2h+ 1-1.
3. Arbore binar complet: este un arbore in care fiecare nivel k contine 2k noduri eventual cu
exceptia ultimului nivel, care poate avea mai putine noduri.
Proprietate: nodurile de pe ultimul nivel sunt deobicei notate in partea stanga.
4. Arbore binar degenerat: este un arbore binar care are proprietatea ca fiecare nod cu
exceptia frunzei are exact un descendent, fie stang, fie drept.
Proprietate: un arbore degenerat cu n noduri are n nivele.
5. Arbore binar echilibrat: este un arbore in care pt oricare nod numarul nodurilor din
subarborele stang difera de numarul nodurilor din subarborele drept cu cel mult o unitate.

Reprzentarea arborilor folosind alocare dinamica

Pentru fiecare nod din arbore se utilizeaza o variabila dinamica de tip structura in care se
memoreaza numarul nodului, sau orice informatie utila depsre nod.

Doua campuri de legatura de tip pointer reprezentand adresa nodului descendent stang respectiv
drept sau nul daca nu avem descendenti directi.
Struct nod

Int info;

Nod *st, *dr;

};

void creare(nod *r, int nr)

if(x!=0)

r=new nod;

r->info=nr;

r->dr=NULL;

r->st=NULL;

cin>>y;

creare(r->st, y);

cin>>y;

creare(r->dr, y);

void afisare(nod * r)

if(r!=NULL)

cout<<r->info<<" ";

afisare(r->st);

afisare(r->dr);

Este necesar sa cunoastem adresa nodului radacina. Pornind de la acest aputem parcurge toate
nodurile arborelui.
Parcurgerile arborelui

Arborii find grafuri acestia pot fi parcursi in latime respectiv in adancime.

Pentru a parcurge un arbore trebuie sa vizitam nodurile acestuia.

In functie de ordinea in ccare se parcurg nodurile, avem:

Parcurgere:

1. Inordine SRD
2. Preordine RSD
3. Postordine SDR

1.Se viziteaza intai subarborele stang, dupa radacina, după subarborele drept.

1.Se viziteaza intai subarborele stang, dupa radacina, după subarborele drept.

1.Se viziteaza intai subarborele stang, dupa radacina, după subarborele drept.

Arbori binari de cautare

Se numeste arbore binar de cautare un arbire binar in care fiecare nod are o cheie unica de
identificare care respecta urmatoarele conditii:

1.Pentru orice subarbore cheile nodurilor din subarborele stang sunt mai mici dechat cheia radacinii.

2.Pnetru orice subarbore cheile nodurilor din subarborele drept sunt mai mari decat cheia radacinii.

Obs: din definitie reiese reiese ca nu se pot repeta cheile arborelui. Daca dorim acest lucru vom
modifica definitia astfel incat in subarborele stang sau drept sa putem adauga elemente egale cu
radacina.

Daca parcurgem un arbore de cautare in inordine, valorile vor aparea in ordine crescatoare.

Operatii asupra arborilor binari de cautare

1. Creare, inserarea unui nod nou;


2. căutarea unei valori;
3. ștergerea unui nod;
4. parcurgerea nodurilor din arbore (traversarea arborelui).

Principiul utilizat este divide et impera.

1. prelucrăm rădăcina;
2. parcurgem subarborele stâng și/sau subarborele drept.

Inserarea nodurilor in arbores

Se citesc mai milte valori. Sa se formeze un arbore binar de cautare iar apoi sa se afiseze nodurile
arborelui in ordine crescatoare in fisierul arbore .out.

Pnetru inserare procedam astfel:


 Daca arborele este vid, vom crea un nod si vom completa informatia acestuia cu val.
Citita. Descendentii stang si drept sunt nuli.
 Daca arborele nu este vid, avem 3 situatii:

1. Val. Este identica cu cheia radacinii si nu adaugam valoarea in arbore


2. Val. Este mai mica decat cheia radacinii si adaugam nodul in stanga
3. Val. Este mai mare decat cheia radacinii si adaugam nodul in dreapta

Stergerea unui nod dintru-un arbore

Pentru a sterge un nod dintr-un arbore binar de cautare, verificam:

1. Daca arborele este vid. In acest caz nu putem realiza stergerea deoacere nodul cautat nu
se gaseste in arbore.
2. Daca arborele este nevid avem 3 situatii:
 Daca valoarea cautata este mai mica decat cheia radacinii, continuam cautarea in
subarborele stang.
 Daca valoarea este mai mare decat cheia radacinii, continuam cautarea in
subarborele drept.
 Daca valoarea este egala cu cheia radacinii, atunci am gasit nodul cautat si vedem
daca:
a) Nodul este frunza: se va sterge nodul, iar adresa retinuta de parinte
pentru el va fi NULL.
b) Are doar subarbore stang, iar cel drept e NULL, atunci adresa retinuta de
parinte pentru el devine adresa subarborelui stang.
c) Are doar subarbore drept, iar cel stang e NULL, atunci adresa retinuta de
parinte pentru el devinde adresa subarborelui drept.
d) Daca si subarborele stang si cel drept sunt nevizi procedam in felul
urmator:
 Gasim cel mai mare nod din subarborele stang(sau cel mai mic
nod din subarborele drept).
 Copiem informatia acestuia in nodul pe care dorim sa il stergem
apoi stergem nodul identificat, ca fiind cel mai mare din
subarborele stang.

Arbore partial de cost minim

Se considera un graf neorientat ponderat(cu costuri), conex G.

Se numeste arbore partial, un graf partial a lui G, care este arbore.

Se numeste arbore partial de cost minim, un arbore partial pentru care suma costurilor muchiilor
este minima.
Exemplu:

Algoritmul lui Kruskall de determinare a arborelui partial de cost minim

Algoritmul porneste de la o padure formata din n subarbori, fiecare nod formand initial un
subarbore.

Vom adauga succesiv muchii pana cand vom obtine un singur arbore(daca graful e conex) sau
pana cand acest lucru nu mai e posibil.

Algoritmul lui Prim

Este un algortim de determinare a arborelui partial de cost minim.

Algoritmul porneste de la un nod start care ulterior va fi radacina arborelui.

Apoi pas cu pas se adauga noi noduri astfel:

Se allege un nod neadaugat inca in arborele current pentru care muchia dintre el si un nod din
arbore are costul minim, apoi se adauga nodul in arbore.

In cazul in care toate nodurile au foist deja adaugate sau in cazul in care arborele nu este conex
si au fost deja adaugate toate nodurile componentei conexe atunci se incheie procedeul .

S-ar putea să vă placă și