You are on page 1of 9

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

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

6
9 st dr

5 st dr 3
nil nil

14
st dr 7
nil

10
nil nil

16
nil nil

st dr

6
nil nil

8
nil nil

Var rad:Nod; procedure intr(var x:Nod;k:integer); begin if if x=nil x=nil then then 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.

9 st dr

5 st dr 3
nil nil

14
st dr 7 st dr 10
nil nil

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.

16
nil nil

6
nil nil

8
nil nil

5 6 7 8

9 10 14 16

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

5 7 6 9
NIL
9 st dr 5 st dr 3
nil nil

14 st dr 7 10
nil nil

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; end; begin res:=gaseste(6); end.

16
nil nil

st dr
6 8

nil nil

nil nil

NIL

9 st dr 5 st dr 3
nil nil

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.

14 st dr 7 10
nil nil

16
nil nil

st dr
6 8

nil nil

nil nil

You might also like