Witam, mam pewien problem dotyczący operacji na drzewach (dokladnie rotacji). Chodzi o wskaźnik do wskaźnika.
załóżmy ze mam strukturę:
struct node {
int val,b;
node* l,*r,*p;
}*root=NULL;
i napisałem funkcje rotującą w prawo lecz jako parametr dostaje wskaźnik do wskaźnika:
void right_rotation(node*& tmp) {
if (tmp) {
node* oldTmp=tmp;
tmp=tmp->l; // !!!!!!! tu nie dziala, nie wiem czemu !
oldTmp->l = tmp->r;
tmp->r=oldTmp;
}
}
wiem ze nie ustalam wskaźnika PARENT ale nie w tym problem.
fragment
tmp=tmp->l;
powinien dla takiej sytuacji(przekazuje wskaznik na 21):
4
21
/
6 28
ustawic wskaznik RIGHT z czwórki NA SZÓSTKĘ.
4
6
zrobilem funkcje drukujace drzewo przed ww. fragmentem i po -> nic takiego nie ma miejsca....,drukuje w kółko to samo drzewo, a po wyjsciu z funkcji drzewo ma wyciety wskaznik na 6 (zapewne dlatego ze reszta kodu z ten funkcji go wycina) ale dlaczego kod tmp=tmp->l nie odnosi efektu ??
ktos pomoze ?
dziękuję