Witam, wydaje mi się że mam banalny problem , ale jakoś brakuje mi dziś sił i pomysłów jak go rozwiązać. Otóż implementuje algorytm Drzew Binarnych dokładnie funkcje wstawiania.
oto kod:
typedef struct wezel *Wskwezla; /* wskaznik na wezel drzewa */
typedef struct wezel{
int klucz;
Wskwezla left, right, p;
int kolor;
} Twezla ; /* typ wezla */
//...
void TreeInsert(Wskwezla T, Wskwezla z)
{
Wskwezla x=T,
y = nil; //Y bedzie zawsze ojcem x'a
while (x!=nil)
{
y = x;
if (z->klucz<(x->klucz))
x = x->left;
else
x = x->right;
}
z->p = y;
if (y==nil)
T = z; // Problem jest TU
else if ((z->klucz)<(y->klucz))
y->left = z;
else y->right = z;
}
//...
No i właśnie w tej funkcji chce zastąpić węzeł T nowym węzłem z . W debugerze widzę ze to działa ale jakby na kopi tego T, gdyż po wyjściu z tej funkcji, T jest takie jakie było.
Jakieś pomysły jak to rozwiązać?