PDA

View Full Version : [C] ottimizzazione funzione alberi binari


Ancosen
05-04-2005, 15:56
Ciao a tutti,
sto implementando una funzione che confronta due alberi binari e restituisce 0 se sono diversi ed 1 se sono uguali. Tuttavia vorrei sapere se č possibile migliorarla dal punto di vista qualitativo con qualche tocco elegante... Visto che ciņ che ho scritto io, non lo č molto... Ho usato un int static per valutare ad ogni chiamata ricorsiva il risultato, penso perņ che sarebbe meglio interrompere la ricorsione una volta verificato che un nodo di un albero non corrisponde con quello del secondo albero...

Ecco quello che ho scritto io:

struct treenode
{
struct treenode *leftptr;
int data;
struct treenode *rightptr;
};
typedef struct treenode TreeNode;
typedef TreeNode *treePtr;

int confrontaAlberi(treePtr P, treePtr U)
{
static int valid = 0;
if(P == NULL || U == NULL)
return 0;
if (P->data == U->data) valid = 1;
valid = 0;
confrontaAlberi(P->leftptr, U->leftptr);
confrontaAlberi(P->rightptr, U->rightptr);
return valid;
}

Grazie a tutti coloro i quali, mi vorrano aiutare

Ancosen
05-04-2005, 16:52
up

cionci
05-04-2005, 17:21
int confrontaAlberi(treePtr P, treePtr U)
{
if(P == NULL && U == NULL)
return 1;
if(P == NULL || U == NULL)
return 0;
if (P->data == U->data)
return confrontaAlberi(P->leftptr, U->leftptr) * confrontaAlberi(P->rightptr, U->rightptr);
return 0;
}