Help....Arbori binari


  1. #1
    0-day Member maryus02 reprezinta o cantitate neglijabila
    Data de inscriere
    24-10-2007
    Sex
    M
    Mesaje
    8
    Mesaje bazar
    10
    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

  2. #2
    Member 2fast's Avatar 2fast reprezinta o cantitate neglijabila
    Data de inscriere
    03-10-2005
    Locaţie
    Bucuresti
    Varsta
    34
    Sex
    M
    Mesaje
    132
    Mesaje bazar
    18
    Putere Reputatie
    38
    Reputatie
    10
    Puncte CF
    20.0
    Daca vrei sa afisezi rezultatele exact in timpul parcurgerii arborelui, fara sa le memorezi in alta parte, iar in structura arborelui ai decat fiii, nu cred ca o sa reusesti pt ca nu ai cum sa te intorci odata ce ai ajuns la fiu x din stanga (de ex). Ori schimbi structura arborelui si introduci un tata (ca sa poti sa te intorci ca la recursivitate), ori inserezi in pozitia care iti convine intr-un vector.
    Cel mai usor ar fi ca in structura aia tnod sa bagi pe langa struct nod *st,*dr si un *tata in care memorezi adresa tatalui.
    Zi-mi daca intelegi sau daca gresesc eu undeva.
    Vrei mai putine reclame? Inregistreaza-te sau logheaza-te

  3. #3
    Oldtimer casperschi are ceva special... casperschi are ceva special...
    Data de inscriere
    09-02-2008
    Varsta
    41
    Sex
    M
    Mesaje
    1,130
    Mesaje bazar
    153
    Putere Reputatie
    38
    Reputatie
    136
    Puncte CF
    40.0
    Usergroups:
    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.
    mutton power!!!
    Vrei mai putine reclame? Inregistreaza-te sau logheaza-te

Google+

Cautati logo-ul CraiovaForum?

Iata cateva variante: