Sunteți pe pagina 1din 7

Ministerul Educatiei,Culturii si Cercetarii al Republicii Moldova

Centrul de Excelenta in Energetica si Electronica


Catedra: Sisteme informationale

Lucrare de laborator Nr.2


Disciplina: Informatica
Tema: Prelucrarea arborilor binari

A elaborat Elevul grupei AT-0118 Cocerghin Vladislav

A verificat Profesorul Culeac Tatiana

Chisinau 2020
1)Formularea problemei:
Elaborati un program care creeaza un arbore binar utilizind algoritmul iterativ;

2)Scopul lucrarii:
- Demonstrarea si intelegerea modurilor de parcurgere a arborilor binari;
- Elaborarea programelor in care se utilizeaza acestea.

3)Listingul programului (in limbajul Pascal):


Program P129;

{Crearea unui arbore binar - iteratie }

type AdresaNod=^Nod;

Nod=record

Info : string;

Stg, Dr : AdresaNod

end;

AdresaCelula=^Celula;

Celula=record

Info : AdresaNod;

Urm : AdresaCelula

end;

var T : AdresaNod; {radacina }

Prim, {primul element din coada }

Ultim : AdresaCelula; { ultimul element din coada }

procedure IntroduInCoada(Q : AdresaNod);

var R : AdresaCelula;

begin

new(R);

R^.Info:=Q;

R^.Urm:=nil;

if Prim=nil then begin Prim:=R; Ultim:=R end

else begin Ultim^.Urm:=R; Ultim:=R end;


end; {IntroduInCoada}

procedure ExtrageDinCoada(var Q : AdresaNod);

var R : AdresaCelula;

begin

if Prim=nil then writeln('Coada este vida')

else begin

R:=Prim;

Q:=R^.Info;

Prim:=Prim^.Urm;

dispose(R);

end;

end; { ExtrageDinCoada }

procedure CreareArboreBinar;

var R, Q : AdresaNod;

s : string;

begin

T:=nil; {initial arborele este vid }

Prim:=nil; Ultim:=nil; {initial coada este vida }

writeln('Dati radacina:'); readln(s);

if s<>'' then

begin

new(R); {crearea radacinii }

R^.Info:=s;

T:=R; {initializarea adresei radacinii }

IntroduInCoada(T);

end;

while Prim<>nil do {cit coada nu e vida }

begin

ExtrageDinCoada(R);

writeln('Dati descendentii nodului ', R^.Info);

write(' sting: '); readln(s);

if s='' then R^.Stg:=nil


else

begin

new(Q); R^.Stg:=Q;

Q^.Info:=s;

IntroduInCoada(Q);

end; { else }

write(' drept: '); readln(s);

if s='' then R^.Dr:=nil

else

begin

new(Q); R^.Dr:=Q;

Q^.Info:=s;

IntroduInCoada(Q);

end; { else }

end; { while }

end; { CreareArboreBinar }

procedure AfisareArboreBinar;

var R : AdresaNod;

begin

if T=nil then writeln('Arbore vid')

else

begin

writeln('Arborele este format din:');

Prim:=nil; Ultim:=nil;

IntroduInCoada(T);

while Prim<>nil do

begin

ExtrageDinCoada(R);

writeln('Nodul ', R^.Info);

write(' descendenti: ');

if R^.Stg=nil then write('nil, ')

else begin
write(R^.Stg^.Info, ', ');

IntroduInCoada(R^.Stg);

end;

if R^.Dr=nil then writeln('nil')

else begin

writeln(R^.Dr^.Info);

IntroduInCoada(R^.Dr);

end;

end; { while }

end; { else }

readln;

end; { AfisareArboreBinar }

begin

CreareArboreBinar;

AfisareArboreBinar;

end.
4)Rezultatul obtinut:
Am dat programul la executie:

Am introdus radacina apoi descendentii acestei radacini si a altor noduri:


Am obtinut rezultatul:

5)Concluzia:
Efectuand Lucrarea de Laborator Nr.2, am realizat cum sa creez un program ce
foloseste arbori binari. Am invatat cum sa folosesc arborile binar pentru
rezolvarea problemelor.