|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Mar 2004
Città: Milano
Messaggi: 415
|
[C] visita albero RB
ciao ragazzi, ho implementato un albero rb che contiene delle strutture ordinate per nome. Ora mi servirebbe scorrere l'albero al fine di ricercare tutti nodi che hanno un contatore con valore pari a quello cercato. Se dovevo ricercare in base al nome era semplice, confrontavo il nome col nodo corrente e mi spostavo a destra o sinistra in base al risultato del confronto, ma in questo caso devo scorrere TUTTI i nodi dell'albero per verificare il valore del contatore di ogni nodo. Qualcuno può aiutarmi? Devo fare una funzione ricorsiva o esiste qualche metodo di ricerca che possa funzionare, come le visite in ampiezza o in profondità? Grazie
__________________
Ho concluso con Worp, -V3G3TA-, Marco911, TheDragon81, ciociola ------------------------------------------------ Diego |
|
|
|
|
|
#2 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
be'
non è che sia molto difficile visitare completamente un albero binario con una procedura ricorsiva, indipendentemente da che sia un albero RB o altro.esempio in C: Codice:
typedef struct _NODE
{
struct _NODE *LeftChild, *RightChild;
// ...
}
NODE, *PNODE;
void Visit(PNODE Root)
{
if (Root == NULL)
{
return;
}
// ...
Visit(Root->LeftChild);
Visit(Root->RightChild);
}
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Mar 2004
Città: Milano
Messaggi: 415
|
Codice:
void eliminah (albero_piastra *tree, piastra * x, int h){
if(x!=NULL){
if (x != tree->nil) {
eliminah(tree,x->left,h);
if(x->altezza == h)
elimina(x->nome);
eliminah(tree,x->right,h);
}
}
}
__________________
Ho concluso con Worp, -V3G3TA-, Marco911, TheDragon81, ciociola ------------------------------------------------ Diego |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:42.











non è che sia molto difficile visitare completamente un albero binario con una procedura ricorsiva, indipendentemente da che sia un albero RB o altro.








