Pai, am mai multe lucruri de spus acum. Un debug mi'a mai lamurit putin mintea dar totusi am nevoie de ajutor ca de aer, poate si din cauza ca peste 2 zile trebuie sa prezint proiectul.
Dupa cum am zis, un debug a fost foarte util si mi'a mai limpezit putin mintea, am descoperit intr-un fel problema la inserare.
Prima data, inserez radacina, apeland :
scanf ("%d",&x) ; nou(r,x) , unde nou creaza un nod in arbore
Dupa aceea, elementele le introduc utilizand in programul principal un While :
While (x != 0)
{scand ("%d",&x); ins(r,x);}
problema apare atunci cand introduc a doua valoare, adica :
Se apeleaza functia ins :
void ins(arb &r,int x)
{if (r == NULL)
nou (r,x);
if (x < r->inf)
ins (r->st,x);
else
if (x > r->inf)
ins (r->dr,x);
ordonare (r);
}
totul merge bine pana cand se ajunge la "Ordonare (r)"
void ordonare(arb &r)
{
if (r->st->pr > r->pr) rotdr(r);
if (r->dr->pr > r->pr)
rotst(r);
}
eroarea "Segmentation fault" apare in locul marcat cu rosu si boldit. Cel mai probabil, comparatia nu se face de la radacina, ci de la r-ul din functie (r->st; r->st->dr; etc). Articolul punea functia de ordonare exact in locul in care am plasat-o si eu, iar daca fac ordonare dupa, cum am incercat, arborele nu se echilibreaza cum trebuie.
Oricine are vreo idee, va rog postati. Eu raman la ideea cu aruncatu laptopului. Multumesc pentru asistenta acordata pana acum.