Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Arbori cu radacina - implementare dinamica
- struct nod { 1
- tip_informatie inf; 2 3 4
- nod *succ[30]; 5 6 7 8 9 10
- }; 11
- CREARE:
- nod *rad;
- int n; - numarul maxim de succesori ai unui nod
- intrare: 1 2 0 0 0 0 3 5 0 0 0 0 6 0 0 0 0 0 0 4 7 0 0 0 0 8 0 0 0 0 9 11 0 0 0 0 0 0 0 0 10 0 0 0 0 0
- void creare(nod*&p)
- {
- int x;
- f >> x;
- if(x==0)
- p=NULL;
- else
- {
- p = new nod;
- p->inf=x;
- for(int i=1;i<=n;i++)
- creare(p->succ[i]);
- }
- }
- Parcurgerea arborilor
- Exista doua modalitati de parcurgere a arborilor:
- 1. Parcurgere in adancime
- - parcurgerea in adancime se face in modul urmator:
- * daca nodul curent nu este NULL
- - atunci se prelucreaza informatia din nodul curent
- - se parcurg in adancime subarborii nodului curent
- Ex.: 1 2 3 5 6 4 7 8 9 11 10
- Din fisierul date.in se citesc de pe prima linie numarul maxim de succesori ai unui nod, iar de pe linia urmatoare informatiile atasate nodurilor unui arbore cu radacina. Valoarea nula va fi precizata prin intermediul valorii -1. Scrieti un program care va permite parcurgerea arborelui folosind parcurgerea in adancime.
- void parcurgere(nod*p)
- {
- if(p!=NULL)
- {
- cout << p->inf << " ";
- for(int i=1;i<=n;i++)
- parcurgere(p->succ[i]);
- }
- }
- Inaltimea arborelui cu radacina:
- int inaltime(nod*p)
- {
- if(p!=NULL)
- {
- int mx=0;
- for(int i=1;i<=n;i++)
- {
- if(mx<inaltime(p->succ[i]))
- mx=inaltime(p->succ[i]);
- }
- return 1+mx;
- }
- else
- return 0;
- }
- Nodul maxim in arborele cu radacina:
- int nodmax(nod*p)
- {
- if(p!=NULL)
- {
- int mx=p->inf;
- for(int i=1;i<=n;i++)
- {
- if(mx<nodmax(p->succ[i]))
- mx=nodmax(p->succ[i]);
- }
- return mx;
- }
- else
- return 0;
- }
- Apeluri:
- int main()
- {
- rad=NULL;
- f >> n;
- creare(rad,n);
- cout << "Parcurgerea in adancime a arborelui este: ";
- parcurgere(rad);
- cout << endl;
- cout <<"Inaltimea arborelui este: "<< inaltime(rad)<<endl;
- cout <<"Nodul maxim este: "<< nodmax(rad);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement