Salut
Daca s-a zis solutia va rog frumos sa ma scuzati

.
M-am gandit la urmatorul algoritm: cand parcurgi nodurile de fiecare data faci o "shiftare la dreapta" ( adica left devine right si right devine parinte , se poate face usor tinand parintele ) , apoi cand nodul meu este NULL il inversez cu parintele. Conditie de oprire: t este NULL si parintele este radacina

.
void parcurgere(Node *T)
{
Node *p=NULL,*f=T,*aux;
while (f!=NULL || p!=T)
{
if ( f )
{
//printf("%d ",f->x);
aux=p;p=f;f=p->left;
p->left=p->right;
p->right=aux;
continue;
}
swap(f,p);
}
}
Ar trebui sa si demonstrez ca e corect

.
In primul rand , in fiecare nod o sa ajungem de 3 ori ( odata din radacina , apoi sin left si right ), deci dupa parcurgere arborele ramane neschimbat.
La fiecare nod vom parcurge in ordinea left , right , parent ( de fiecare data left se schimba cu right ).
La radacina , vom parcurge in ordina left , right , parent ( moment in care vom fi pe nodul NULL si parintele lui va fi radacina ).
Sper ca s-a inteles ce am vrut sa zic
