- EUR
- 4,9763
-
0-day Member
- Putere Reputatie
- 34
- Reputatie
- 10
- Puncte CF
- 0.0
Help....Arbori binari
am o problema la facultate care imi cere sa fac un program in C care realizeaza crearea si parcurgerea in postordine(SDR) a unui arbore binar, atat recursiv cat si iterativ. Functiile recursive stiu sa le fac, problema e ca nu stiu cum sa le fac si pe cele iterative.. Imi puteti spune cum se fac si alea iterative? Asta e programu cu functiile recursive:
#include<stdio.h>
#include<conio.h>
typedef struct nod{
char inf;
struct nod *st,*dr;
}tnod;
tnod *pp;
void postordine(tnod *p){
if(p!=NULL){
postordine(p->st);
postordine(p->dr);
printf("%c",p->inf);
}
}
tnod *creare_arbore(){
char car;
tnod *p;
printf("Dati configuratia arborelui: ");
scanf("%c",&car);
if(car!='.'){
p=new tnod;
p->inf=car;
p->st=creare_arbore();
p->dr=creare_arbore();
return p;
}
else return NULL;
}
void main(){
pp=creare_arbore();
fflush(stdin);
postordine(pp);
getch();
fflush(stdin);
}
Crearea se face folosind o configuratie de tipul: abc..de..fg...hi..jkl..m..n..
Iar in urma executarii parcurgerii in postordine va da: cegfdbilmknjha
-
-
Daca mai adaugi si un parinte atunci se pierde notiunea de arbore binar.
Exista mai multe variante non-recursive.
De exemplu: http://discuss.techinterview.org/def...w.11.318495.11
http://www.jcmiras.net/computers_and...als/index.html
Procedeul consta in mentinerea unor structuri auxiliare de date cu care iti "amintesti" pozitia curenta in arbore si calea de la radacina pana la nodul curent.