PDA

View Full Version : [C] Alberi Binari Funzioni


xbubbax
28-05-2008, 13:45
Qualcuno mi dice se ci sono errori in queste funzioni "base" per gli alberi binari?

Sembrano perfette, visto che ho preso spunto dal libro, ma di da molti errori quando le uso nei programmi

#include <stdio.h>
#include <stdlib.h>

struct tree
{
int dato;
struct tree *sx, *dx;
};

typedef struct tree tree;

int Is_Empty(tree Radice)
{
if(Radice==NULL){return 1;}

return 0;
}

tree Albero_Vuoto(void)
{
return NULL;
}

int Valore_Etichetta(tree Radice)
{
if(Radice!=NULL){return Radice->dato;}
}

tree Sinistro(tree Radice)
{
if(Radice!=NULL){return Radice->sx;}

return NULL;
}

tree Destro(tree Radice)
{
if(Radice!=NULL){return Radice->dx;}

return NULL;
}

tree Costruisci_Albero(int Etichetta, tree s, tree d)
{
tree Radice;
Radice=(tree)malloc(sizeof(nodo));
Radice->dato=Etichetta;
Radice->sx=s;
Radice->dx=d;

return Radice;
}

void Inorder(tree Radice)
{
if(Radice!=NULL)
{
Inorder(Radice->sx);
printf("%d ", Valore_Etichetta(Radice));
Inorder(Radice->dx);
}
}

void Preorder(tree Radice)
{
if(Radice!=NULL)
{
printf("%d ", Valore_Etichetta(Radice));
Preorder(Radice->sx);
Preorder(Radice->dx);
}
}

void Postorder(tree Radice)
{
if(Radice!=NULL)
{
Postorder(Radice->sx);
Postorder(Radice->dx);
printf("%d ", Valore_Etichetta(Radice));
}
}

wingman87
28-05-2008, 20:10
Il tipo tree dovrebbe essere un puntatore a un struct tree. Così come è scritto tutti i passaggi di parametri li stai facendo per valore
Non hai controllato l'esito della malloc.

sottovento
29-05-2008, 04:46
Esatto, Wingman87.
In piu', la Valore_Etichetta() ritorna un valore sensato solo se il nodo non e' nullo, altrimenti ritorna un valore indefinito.
Sinistro() e Destro() ritorneranno NULL se il valore dell'albero sx/dx e' NULL oppure se il nodo e' NULL. Vabbe'...

Cmq le cose piu' importanti le ha segnalate Wingman87

shinya
29-05-2008, 08:37
Dal titolo del post pensavo si parlasse di alberi binari di funzioni (cioè, non di interi, come poi si è rivelato, ma di puntatori a funzione)...e mi chiedevo che strana struttura potesse essere e a cosa potesse servire (in senso buono) :)