Ciao a tutti, devo implementare una funzione che sia in grado di stabilire se un albero binario è lineare (cioè se ogni suo nodo ha al più un nodo figlio).
Ho implementato la seguente funzione ricorsiva, è corretta??
/* verifica se l'albero è lineare (ogni nodo ha al più un figlio ) */
bool verificaLin(tAlbero albero)
{
if (albero == NULL)
return TRUE;
else {
if (albero->sinistro && albero->destro) /* entrambi i figli esistono */
return FALSE; /* albero non lineare */
else
return (verificaLin(albero->sinistro) && verificaLin(albero->destro));
}
}
La definizione delle strutture è la seguente
struct StructNodoAlbero {
tInfo info; /* etichetta nodo albero */
struct StructNodoAlbero *destro, /* puntatori a figli destro e sinisto */
*sinistro;
};
typedef struct StructNodoAlbero tNodoAlbero;
typedef tNodoAlbero * tAlbero;