Sunteți pe pagina 1din 9

A

Arbori?!?!?!

Arbori

Prin nod se nelege o variabil dinamic de tipul


record care conine un cmp destinat memorrii
informaiilor utile i doi indicatori de adres.
Arborele binar se definete recursiv astfel:
1. Un nod este un arbore binar
2. Un nod ce conine legturi ctre ali doi arbori
binari este un arbore binar
Prin convenie, arborele vid nu conine nici un
nod.
Nodul spre care nu este ndreptat nici o legtur
se numete rdcin

Structura arborelui

Arbori

Cei doi arbori conectai la rdcin se numesc


subarborele stng i subarborele drept.
Un nod la care nu este conectat nici un subarbore
este un nod terminal, n caz contrar este neterminal.
n programele de mai jos se vor utiliza urmtoarele
notaii:
x^.st - subarborele stng
x^.dr - subarborele drept
x^.par - printele nodului

Arbori

Inserarea unui nod

k=
x=

rad
9
st dr
5

14

st dr

st dr

3
nil nil

nil nil

nil

st dr

10

16

nil nil

nil nil

8
nil nil

Var rad:Nod;
procedure intr(var x:Nod;k:integer);
begin
x=nil then
then
ifif x=nil
begin
new(x);
x^.inf:=k;
x^.st:=nil;
x^.dr:=nil;
end
else if k>x^.inf then intr(x^.dr,k)
else intr(x^.st,k);
end;
begin
intr(rad,6);
end.

Arbori

Parcurge inordine

x=

Var rad:Nod;
procedure parcurge(x:Nod);
begin
if x^.st<>nil then parcurge(x^.st);
Write(x^.info, );
);
if x^.dr<>nil then parcurge(x^.dr);
end;
begin
parcurge(rad);
end.

rad
9
st dr
5

14

st dr

st dr

nil nil

st dr

10

16

nil nil

nil nil

nil nil

nil nil

5 6 7 8

9 10 14 16

Parcurgeri in arbori

Arbori

Parcurgerea n preordine sau traversarea RSD:


1) se viziteaz rdcina
2) se viziteaz subarborele stng
3) se viziteaz subarborele drept
Parcurgerea n inordine sau traversarea SRD:
1) se viziteaz subarborele stng
2) se viziteaz rdcina
3) se viziteaz subarborele drept
Parcurgerea n postordine sau traversarea SDR:
1) se viziteaz subarborele stng
2) se viziteaz subarborele drept
3) se viziteaz rdcina

Arbori

Cautare iterativa
x^.info=

6759

NIL

x=

k=

res=
rad
9
st dr

14

st dr

st dr

nil nil

st dr

10

16

nil nil

nil nil

nil nil

nil nil

gaseste=

Var rad,res:Nod;
function gaseste(k:Integer):Nod;
var x:Nod;
begin
x:=rad;
while (x<>nil) and (k<>x^.info) do
begin
if (k<x^.info) then x:=x^.st
else x:=x^.dr;
end;
gaseste:=x;
gaseste:=x;
end;
end;
begin
res:=gaseste(6);
end.

NIL

Arbori

Element minim

Var rad,res:Nod;
function minim:Nod;
var x:Nod;
begin
x:=rad;
while (x^.st<>nil) do
x:=x^.st;
minim:=x;
end;
begin
res:=minim;
end.

res=

x=

rad
9
st dr
5

14

st dr

st dr

nil nil

st dr

10

16

nil nil

nil nil

nil nil

nil nil

The

End