xbubbax
22-01-2009, 17:38
Oggi sto cominciando a fare pratica con gli alberi binari in c ma non riesco a capire come funzionano queste 3 semplici funzioni.
void Inorder(tree t){
if(t!=NULL)
{
Inorder(t->SX);
printf("%d ", t->DATO);
Inorder(t->DX);
}}
void Preorder(tree t){
if(t!=NULL)
{
printf("%d ", t->DATO);
Preorder(t->SX);
Preorder(t->DX);
}
}
void Postorder(tree t)
{
if(t!=NULL)
{
Postorder(t->SX);
Postorder(t->DX);
printf("%d ", t->DATO);
}
}
ad esempio se l'albero è questo (con visione Inorder): 12 - 2 - 14 - 3 - 7 - 9 - 5
Potete spiegarmi tutti i passaggi che fanno le 3 funzioni, cioè come agiscono sullo stack ecc..in pratica non capisco ancora bene come funzionano le chiamate ricorsive.
Vorrei capirlo bene perchè se non capisco questo dubito che potrò fare esercizi piu difficili sugli alberi.
Vi ringrazio in anticipo.
void Inorder(tree t){
if(t!=NULL)
{
Inorder(t->SX);
printf("%d ", t->DATO);
Inorder(t->DX);
}}
void Preorder(tree t){
if(t!=NULL)
{
printf("%d ", t->DATO);
Preorder(t->SX);
Preorder(t->DX);
}
}
void Postorder(tree t)
{
if(t!=NULL)
{
Postorder(t->SX);
Postorder(t->DX);
printf("%d ", t->DATO);
}
}
ad esempio se l'albero è questo (con visione Inorder): 12 - 2 - 14 - 3 - 7 - 9 - 5
Potete spiegarmi tutti i passaggi che fanno le 3 funzioni, cioè come agiscono sullo stack ecc..in pratica non capisco ancora bene come funzionano le chiamate ricorsive.
Vorrei capirlo bene perchè se non capisco questo dubito che potrò fare esercizi piu difficili sugli alberi.
Vi ringrazio in anticipo.