Prezentarea se încărcă. Vă rugăm să așteptați

Prezentarea se încărcă. Vă rugăm să așteptați

A i r b o r.

Prezentări similare


Prezentarea pe tema: "A i r b o r."— Transcriere de prezentare:

1 A i r b o r

2 Arbori Arbori?!?!?! Prin nod se înţelege o variabilă dinamică de tipul record care conţine un cîmp destinat memorării informaţiilor utile şi doi indicatori de adresă. Arborele binar se defineşte recursiv astfel: 1. Un nod este un arbore binar 2. Un nod ce conţine legături către alţi doi arbori binari este un arbore binar Prin convenţie, arborele vid nu conţine nici un nod. Nodul spre care nu este îndreptată nici o legătură se numeşte rădăcină

3 Arbori Structura arborelui
Cei doi arbori conectaţi la rădăcină se numesc subarborele stîng ş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 următoarele notaţii: x^.st - subarborele stîng x^.dr - subarborele drept x^.par - părintele nodului

4 Arbori Inserarea unui nod k= x= rad
6 Var rad:Nod; procedure intr(var x:Nod;k:integer); begin if x=nil then 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; intr(rad,6); end. x= rad if x=nil then if x=nil then if x=nil then if x=nil then 9 new(x); st dr x^.inf:=k; 5 14 x^.st:=nil; x^.dr:=nil; st dr st dr 3 nil 7 10 nil 16 nil else if k>x^.inf then intr(x^.dr,k) else if k>x^.inf then intr(x^.dr,k) else if k>x^.inf then intr(x^.dr,k) nil else intr(x^.st,k); else intr(x^.st,k); st dr end; 6 nil 6 8 nil intr(rad,6); nil nil end.

5 3 5 6 7 8 9 10 14 16 Arbori Parcurge inordine x= rad 9 st dr 5 14 st
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; parcurge(rad); end. x= rad if x^.st<>nil then parcurge(x^.st); if x^.st<>nil then parcurge(x^.st); if x^.st<>nil then parcurge(x^.st); if x^.st<>nil then parcurge(x^.st); if x^.st<>nil then parcurge(x^.st); if x^.st<>nil then parcurge(x^.st); if x^.st<>nil then parcurge(x^.st); if x^.st<>nil then parcurge(x^.st); if x^.st<>nil then parcurge(x^.st); 9 Write(x^.info,’ ’); Write(x^.info,’ ’); Write(x^.info,’ ’); Write(x^.info,’ ’); Write(x^.info,’ ’); Write(x^.info,’ ’); Write(x^.info,’ ’); Write(x^.info,’ ’); Write(x^.info,’ ’); if x^.dr<>nil then parcurge(x^.dr); if x^.dr<>nil then parcurge(x^.dr); if x^.dr<>nil then parcurge(x^.dr); if x^.dr<>nil then parcurge(x^.dr); if x^.dr<>nil then parcurge(x^.dr); if x^.dr<>nil then parcurge(x^.dr); if x^.dr<>nil then parcurge(x^.dr); if x^.dr<>nil then parcurge(x^.dr); if x^.dr<>nil then parcurge(x^.dr); st dr 5 14 parcurge(rad); st dr st dr end. 3 nil 7 10 nil 16 nil st dr 6 nil 8 nil 3 5 6 7 8 9 10 14 16

6 Arbori Parcurgeri in arbori
Parcurgerea în preordine sau traversarea RSD: 1) se vizitează rădăcina 2) se vizitează subarborele stîng 3) se vizitează subarborele drept Parcurgerea în inordine sau traversarea SRD: 1) se vizitează subarborele stîng 2) se vizitează rădăcina 3) se vizitează subarborele drept Parcurgerea în postordine sau traversarea SDR: 1) se vizitează subarborele stîng 2) se vizitează subarborele drept 3) se vizitează rădăcina

7 6 5 6 7 9 Arbori Cautare iterativa x^.info= k= x= res= rad gaseste=
Var rad,res:Nod; function gaseste(k:Integer):Nod; var x:Nod; begin x:=rad; while (x<>nil) and (k<>x^.info) do if (k<x^.info) then x:=x^.st else x:=x^.dr; end; gaseste:=x; res:=gaseste(6); end. x^.info= 6 5 6 7 9 k= x:=rad; x= NIL res= while (x<>nil) and (k<>x^.info) do while (x<>nil) and (k<>x^.info) do while (x<>nil) and (k<>x^.info) do while (x<>nil) and (k<>x^.info) do if (k<x^.info) then x:=x^.st if (k<x^.info) then x:=x^.st if (k<x^.info) then x:=x^.st rad else x:=x^.dr; 9 gaseste:=x; st dr end; 5 14 res:=gaseste(6); end. st dr st dr . 3 nil 7 10 nil 16 nil st dr 6 nil 8 nil gaseste= NIL

8 Arbori Element minim res= x= rad
Var rad,res:Nod; function minim:Nod; var x:Nod; begin x:=rad; while (x^.st<>nil) do x:=x^.st; minim:=x; end; res:=minim; end. res= x:=rad; while (x^.st<>nil) do while (x^.st<>nil) do while (x^.st<>nil) do x:=x^.st; x:=x^.st; x= rad minim:=x; 9 res:=minim; st dr end. 5 14 st dr st dr 3 nil 7 10 nil 16 nil st dr 6 nil 8 nil

9 The End


Descărcați ppt "A i r b o r."

Prezentări similare


Publicitate de la Google