salve, ho questa procedura che mi stampa i dati di un albero ordinato in maniera ordinata crescente...

void InOrderCD(Tnodo A) {
if (A!=NULL) {

InOrderCD(A->left);
cout<<A->key<<endl;
InOrderCD(A->right);

}
}

ora io dovrei effettuare la stampa sia in maniera crescente che decrescente...
come posso ottimizzare questa procedura ed effettuare questa stampa sfruttanto la chiamata di PUSH E POP ?

grazie