Linearità Albero Binario

di il
2 risposte

Linearità Albero Binario

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;

2 Risposte

  • Re: Linearità Albero Binario

    Per vedere se la tua funzione FUNZIONA, devi applicarla a dei casi di TEST:

    devi creare un albero linearo, quindi richiamare la tua funzione, e vedere se ritorna il valore corretto.

    QUINDI

    devi creare degli alberi NON LINEARI e vedere se anche in questo caso la funzione ritorna il valore corretto.

    Ovviamente, devi cercare di inventarti dei casi di test INTELLIGENTI. Per esempio:

    1) popolare solo il ramo destro
    2) popolare solo il ramo sinistro
    3) popolare alternativamente entrambi i rami
  • Re: Linearità Albero Binario

    Va bene, grazie!!
Devi accedere o registrarti per scrivere nel forum
2 risposte