|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jan 2003
Città: Roma
Messaggi: 183
|
[C] ottimizzazione funzione alberi binari
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 Ultima modifica di Ancosen : 05-04-2005 alle 16:13. |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Jan 2003
Città: Roma
Messaggi: 183
|
up
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
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; } |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:09.


















