|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 | |
|
Senior Member
Iscritto dal: Jun 2009
Messaggi: 5626
|
[C] Albero binario e somma nodi livello k
Come faccio a sommare i nodi a livello k se posso solo "portare su" a e liv?
Quote:
|
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Feb 2010
Messaggi: 466
|
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Che intendi con "portare su"?
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jun 2009
Messaggi: 5626
|
intanto grazie,intendo dire passarlo come parametro e nella struttura dell' albero ho
int val e 2 struct per *left e *right |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
facilissimo
pseudocodice, spero si capisca: (R é il nodo radice dell'albero, R.Left é il figlio sinistro, R.Right il destro, k é il livello, i é un parametro intero che indica il livello corrente) Codice:
function f(R, k, i) : if i < k : n <- 0 if R has left child : n <- n + f(R.Left, k, i + 1) if R has right child : n <- n + f(R.Right, k, i + 1) return n else : return 1 Codice:
f(T, k, 0) |
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Quote:
Codice:
algoritmo SommaLivelloK(albero T, intero L)
{
intero risultato = 0;
se (T non è nullo) e (L >= 0) {
risultato += chiave(T);
risultato += SommaLivelloK(sinistro(T), L - 1);
risultato += SommaLivelloK(destro(T), L - 1);
}
restituisci risultato;
}
P.S.: chiaramente, le funzioni chiave(), sinistro() e destro() associano ad ogni nodo dell'albero, rispettivamente, un valore chiave, un figlio sinistro, un figlio destro.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! Ultima modifica di DanieleC88 : 01-03-2010 alle 13:29. |
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Jun 2009
Messaggi: 5626
|
grazie davvero ragazzi,ho risolto,ma ho un nuovo problema,
Quote:
Grazie |
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Jun 2002
Messaggi: 442
|
Chiedo scusa al thread starter se mi intrometto ma ho visto questo thread a proposito di ricorsione ed alberi ennari e volevo chiedere un quesito in questa sede visto che mi sembrate molto competenti in materia
Se la mia funzione torna un array, come posso fare per eseguirla ricorsivamente *per ogni elemento dell'array* (che a sua volta potrà originare un array con più di un elemento)? Attraverso un for posso scorrere tutto l'array e richiamare la funzione con l'oggetto aggiornato ma si ferma ovviamente (?) al primo elemento e non li scorre tutti. Non so se sia rilevante, ma nel mio caso sto usando PHP.
__________________
- |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Dev'essere necessariamente ricorsiva? Perché IMHO viene più semplice da fare iterativamente.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:15.




















