PDA

View Full Version : [C] Semplici Esercizi Alberi Binari


xbubbax
02-04-2008, 12:04
Qualcuno mi spiega come funziona questa semplice funzione e come si inizializza un albero binario nel main, cioè come si inseriscono gli elementi.
Grazie

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

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

typedef struct tree tree;

int Ricerca(tree *t, int k)
{
//PRE LA FUNZIONE PRENDE IN INGRESSO UN ALBERO BINARIO t DI INTERI E UN......
//INTERO K DA CERCARE NEI NODI DELL'ALBERO
//POST LA FUNZIONE RESTITUISCE 1 SE K E' CONTENUTO IN ALMENO UN NODO,.........
//0 ALTRIMENTI. SE L'ALBERO E' VUOTO LA FUNZIONE RESTITUISCE 0

if(Is_Empty(t)==1){return 0;}

return t->dato == k
|| ricerca(t->sx, k);
|| ricerca(t->dx, k);}

cionci
02-04-2008, 12:19
E' scritta male...questa dovrebbe essere così (non ci vuole il ; dopo il primo ricerca e ricerca deve essere maiuscolo):

return t->dato == k || Ricerca(t->sx, k) || Ricerca(t->dx, k);
}

xbubbax
02-04-2008, 12:25
in teoria dovrebbe essere, se t->dato è uguale a k ritorna 1, altrimenti cerca nel sottoalbero destro o sinistro. ma non si dovrebbe cercare in entrambi i sotto alberi? cioè chi è che decide in quale sottoalbero cercare?

cionci
02-04-2008, 12:28
Infatti si cerca nei sottoalberi. Quegli OR vengono valutati a partire da sinistra verso destra. Se il primo torna 1 allora gli altri non vengono valutati.