1
IMPLEMENTAREA ARBORELUI CU RADACINA Se face prin: -matrice de adiacenta -referinte descendente-legatura de tip tata -referinte ascendente-legatura de tip parinte nod terminal Primele doua implementari sunt ineficiente in cazul arborelui cu radacina. Sunt specifice implementarile cu legatura de tip tata si respectiv legatura de tip parinte nod terminal. a)Implementarea prin referinte descendente-legatura de tip tata -arborele este reprezentat sub forma unui vector t cu n componente in care se memoreaza, pentru fiecare nod, eticheta parintelui sau. OBS: Din vectorul tata putem obtine urmatoarele informatii: -eticheta nodului radacina- indicele i pentru care t[i]=0 -etichetele nodurilor terminale- nodurile de indice i a caror eticheta nu exista in vectorul t -eticheta parintelui unui nod i este t[i] -etichetele fiilor unui nod i- indicii j pentru care t[j]=i -etichetele fratilor unui nod i- indicii j pentru care t[i]=t[j]. b)Implementarea prin referinte ascendente-legatura de tip parinte nod terminal -arborele este reprezentat sub forma a doi vectori cu n-1 componente: vectorul t in care sunt memorate nodurile in ordine, pornind de la nodurile terminale, si vectorul pt in care sunt memorate nodurile parinte ale nodurilor terminale. -algoritmul de construire a celor doi vectori este urmatorul: -pentru fiecare indice de la 1 la n-1 se executa: -se cauta nodul terminal cu eticheta cea mai mica -se atribuie aceasta eticheta pentru t[i] -se atribuie lui pt[i] eticheta nodului parinte al nodului terminal t[i] -se elimina din arbore nodul terminal t[i] OBS: Vectorii t si pt sunt aceiasi pentru un arbore, indiferent de nodul radacina ales. ALGORITMI PENTRU PARCURGEREA UNUI ARBORE CU RADACINA -parcurgerea unui arbore cu radacina se poate face prin: -algoritmul de parcurgere in latime -algoritmul de parcurgere in adancime. a)Algoritmul de parcurgere in latime -metoda: se prelucreaza mai intai informatia din nodul radacina, dupa care sunt prelucrate, de la stanga la dreapta, nodurile aflate pe primul nivel, apoi pe cel de-al doilea, etc. -programul care realizeaza algoritmul foloseste urmatoarele subprograme -functia procedurala citire- creeaza vectorul t prin prelucrarea informatiilor de la tastatura saudin fisier -functia operand rad-determina radacina r a arborelui -fct. procedurala init- initializeaza coada de asteptare cu radacina -fct. operand este_vida- testeaza coada de asteptare daca este vida -fct. Procedurala adauga-adauga un nod la coada de asteptare -fct. procedurala elimina- elimina npdul prelucrat din coada de asteptare -fct. procedurala elimina- prelucreaza primul nod din coada: adauga la coada de asteptare toti fiii acestui nod si apoi il elimina din coada de asteptare -fct. procedurala afisare- afiseaza nodurile arborelui in ordinea prelucrarii b)Algoritmul de parcurgere in adancime -metoda: pornind de la nodul radacina se prelucreaza fiii unui nod de la stanga la dreapta, iar trecerea de la nodul curent la fratele din dreapta, se face numai dupa ce au fost vizitati toti descendentii nodului curent, deci ai intregului subarbore dezvoltat din acesta. In functie de ordinea relativa de prelucrare a nodului radacina si, respectiv, a subarborilor, exista doi algoritmi: 1. algoritmul de parcurgere in preordine-informatia din nodul radacina este prelucrata inaintea informatiilor din celelalte noduri ale subarborilor 2. algoritmul de parcurgere in postordine-informatia din nodul radacina este prelucrata dupa ce au fost prelucrate informatiile din toate celelalte noduri ale subarborilor . Algoritmul de parcurgere in postordine -nodului radacina i se va atribui cea mai mare eticheta. Prelucrarea se face prin parcurgerea simultana a vectorilor t si pt si cautarea nodurilor care apartin aceluiasi subarbore. Evidenta nodurilor prelucrate este tinuta prin intermediul vectorului vizitat -pentru realizarea programului se folosesc urmatoarele subprograme: -fct. procedurala citire- creeaza vectorii t si pt -functia operand terminat- verifica daca au fost prelucrate toate nodurile arborelui -functia procedurala prelucrare-prelucreaza nodurile unui subarbore, pornind de la nodul terminal cu cea mai mica eticheta

IMPLEMENTAREA ARBORELUI CU RADACINA

Embed Size (px)

Citation preview

Page 1: IMPLEMENTAREA ARBORELUI CU RADACINA

IMPLEMENTAREA ARBORELUI CU RADACINASe face prin: -matrice de adiacenta -referinte descendente-legatura de tip tata -referinte ascendente-legatura de tip parinte nod terminalPrimele doua implementari sunt ineficiente in cazul arborelui cu radacina.Sunt specifice implementarile cu legatura de tip tata si respectiv legatura de tip parinte nod terminal.a)Implementarea prin referinte descendente-legatura de tip tata-arborele este reprezentat sub forma unui vector t cu n componente in care se memoreaza, pentru fiecare nod, eticheta parintelui sau.OBS: Din vectorul tata putem obtine urmatoarele informatii:-eticheta nodului radacina-indicele i pentru care t[i]=0-etichetele nodurilor terminale-nodurile de indice i a caror eticheta nu exista in vectorul t-eticheta parintelui unui nod i este t[i]-etichetele fiilor unui nod i-indicii j pentru care t[j]=i-etichetele fratilor unui nod i-indicii j pentru care t[i]=t[j].b)Implementarea prin referinte ascendente-legatura de tip parinte nod terminal-arborele este reprezentat sub forma a doi vectori cu n-1 componente: vectorul t in care sunt memorate nodurile in ordine, pornind de la nodurile terminale, si vectorul pt in care sunt memorate nodurile parinte ale nodurilor terminale.-algoritmul de construire a celor doi vectori este urmatorul: -pentru fiecare indice de la 1 la n-1 se executa: -se cauta nodul terminal cu eticheta cea mai mica -se atribuie aceasta eticheta pentru t[i] -se atribuie lui pt[i] eticheta nodului parinte al nodului terminal t[i] -se elimina din arbore nodul terminal t[i]OBS: Vectorii t si pt sunt aceiasi pentru un arbore, indiferent de nodul radacina ales.

ALGORITMI PENTRU PARCURGEREA UNUI ARBORE CU RADACINA-parcurgerea unui arbore cu radacina se poate face prin: -algoritmul de parcurgere in latime -algoritmul de parcurgere in adancime.a)Algoritmul de parcurgere in latime-metoda: se prelucreaza mai intai informatia din nodul radacina, dupa care sunt prelucrate, de la stanga la dreapta, nodurile aflate pe primul nivel, apoi pe cel de-al doilea, etc.-programul care realizeaza algoritmul foloseste urmatoarele subprograme -functia procedurala citire-creeaza vectorul t prin prelucrarea informatiilor de la tastatura saudin fisier

-functia operand rad-determina radacina r a arborelui -fct. procedurala init-initializeaza coada de asteptare cu radacina -fct. operand este_vida-testeaza coada de asteptare daca este vida -fct. Procedurala adauga-adauga un nod la coada de asteptare -fct. procedurala elimina-elimina npdul prelucrat din coada de asteptare -fct. procedurala elimina-prelucreaza primul nod din coada: adauga la coada de asteptare toti fiii acestui nod si apoi il elimina din coada de asteptare -fct. procedurala afisare-afiseaza nodurile arborelui in ordinea prelucrariib)Algoritmul de parcurgere in adancime-metoda: pornind de la nodul radacina se prelucreaza fiii unui nod de la stanga la dreapta, iar trecerea de la nodul curent la fratele din dreapta, se face numai dupa ce au fost vizitati toti descendentii nodului curent, deci ai intregului subarbore dezvoltat din acesta. In functie de ordinea relativa de prelucrare a nodului radacina si, respectiv, a subarborilor, exista doi algoritmi:1. algoritmul de parcurgere in preordine-informatia din nodul radacina este prelucrata inaintea informatiilor din celelalte noduri ale subarborilor2. algoritmul de parcurgere in postordine-informatia din nodul radacina este prelucrata dupa ce au fost prelucrate informatiile din toate celelalte noduri ale subarborilor .Algoritmul de parcurgere in postordine-nodului radacina i se va atribui cea mai mare eticheta. Prelucrarea se face prin parcurgerea simultana a vectorilor t si pt si cautarea nodurilor care apartin aceluiasi subarbore. Evidenta nodurilor prelucrate este tinuta prin intermediul vectorului vizitat-pentru realizarea programului se folosesc urmatoarele subprograme: -fct. procedurala citire-creeaza vectorii t si pt -functia operand terminat-verifica daca au fost prelucrate toate nodurile arborelui -functia procedurala prelucrare-prelucreaza nodurile unui subarbore, pornind de la nodul terminal cu cea mai mica eticheta