Codice PHP:
void gotoxy(int x, int y)
{
HANDLE hConsoleOutput;
COORD dwCursorPosition;
dwCursorPosition.X = x;
dwCursorPosition.Y = y;
hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hConsoleOutput,dwCursorPosition);
}
void StampaAlbero
(
Nodepointer Albero,
int *Partenza,
int *Fine
)
{
int x = ceil(*X/2);
int y = *Y+2;
gotoxy( 10, 50 );
printf("x=%d, y=%d", x, y );
if( Albero != NULL ) /* Se esiste almeno un Nodo */
{
gotoxy( x, y );
printf(" %d ", Albero->valore); /* Stampo la radice ( Padre ) */
getch();
StampaAlbero( Albero->son_sx, &x, &y ); /* passo al Figlio Sinistro */
StampaAlbero( Albero->son_dx, &X, &y ); /* passo al Figlio Destro */
}
} /* Fine StampaAlbero */
per l'albero:
( 1 ( 2 ( 4 ( 8 ( 9 (N)(N) )( 10 (N)(N) ) )(N) )( 5 (N)(N) ) )( 3 ( 6 (N)(N) )( 7 (N)(N) ) ) )
stampa correttamente fino a 9, ma poi ovviamente si perde gli indici di posizione X e Y...
percè ritorna all'istanza precedente cioè a 8 e non aggiornando gli indici, sovrascrive i valori...
se ti va di dare un'occhiata, magari ti mando proprio il file .c così è più semplice anche per te.
Si tratta solo di come poter controllare gli indici di posizione alla fine della ricorsione sinistra e destra...poi il dilemma è sciolto
GRAZIE!