Salve a tutti, qualcuno mi saprebbe dire come si può visualizzare un albero binario graficamente in C, utilizzando magari la funzione GotoXY:
Codice PHP:
void GotoXY(int x, int y)
{
COORD CursorPos = {x, y};
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(hConsole, CursorPos);
}
Ve ne sarei grato... io ho scritto qualcosa, ma stampa solo il primo nodo e si blocca...
La mia idea di partenza è questa, ma non so perchè alla prima chiamata ricorsiva si blocca, come se andasse in segmentation fault
Codice PHP:
void StampaAlbero
(
TREE *albero,
int *X,
int *Y,
int *Dir,
int *Index
)
{
int x, y, Direzione, i;
x=*X;
y=*Y;
Direzione = *Dir;
i = *Index;
if( albero != NULL )
{
GotoXY( x, y );
printf( "%d", albero->Padre+1 );
getch();
if( Direzione == -1 )
{
Direzione = -1;
i=2i;
x = x-x/i;
y=y+1;
StampaAlbero( albero->FiglioSx, &x, &y, &Direzione, &i );
}
Direzione = 1;
if( Direzione == 1 )
{
i=2i;
x = x+x/i;
StampaAlbero( albero->FiglioDx, &x, &y, &Direzione, &i );
}
}
else
{
if( Direzione == -1 )
{
i=2i;
x = x-x/i;
y=y+1;
}
else
{
i=2i;
x = x+x/i;
}
GotoXY( x, y );
printf( "N" );
getch();
}
*Dir = Direzione;
*X=x;
*Y=y;
*Index=i;
} /* StampaAlbero */
ma se lo stampo con questa
Codice PHP:
void StampaAlbero
(
TREE *albero
)
{
if( albero != NULL )
{
printf("( %d ", albero->Padre+1);
StampaAlbero( albero->FiglioSx );
StampaAlbero( albero->FiglioDx );
printf(" )");
}
else
{
printf("(N)");
}
}
La stampa avviene in modo corretto!
Chi mi aiuta?