Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Con velocità teoriche fino a 11 Gbps, gestione tramite app intelligente e protezione avanzata dei dispositivi, Roamii BE Pro porta il Wi‑Fi 7 tri‑band nelle abitazioni più esigenti. Un sistema Wi-Fi Mesh proposto da MSI allo scopo di garantire agli utenti una rete fluida e continua capace di sostenere streaming 8K, gaming competitivo e le applicazioni moderne più esigenti in termini di banda
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Mate X7 rinnova la sfida nel segmento dei pieghevoli premium puntando su un design ancora più sottile e resistente, unito al ritorno dei processori proprietari della serie Kirin. L'assenza dei servizi Google e del 5G pesa ancora sull'esperienza utente, ma il comparto fotografico e la qualità costruttiva cercano di compensare queste mancanze strutturali con soluzioni ingegneristiche di altissimo livello
Nioh 3: souls-like punitivo e Action RPG
Nioh 3: souls-like punitivo e Action RPG
Nioh 3 aggiorna la formula Team NINJA con aree esplorabili più grandi, due stili di combattimento intercambiabili al volo (Samurai e Ninja) e un sistema di progressione pieno di attività, basi nemiche e sfide legate al Crogiolo. La recensione entra nel dettaglio su combattimento, build, progressione e requisiti PC
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 14-02-2006, 12:41   #1
luxorl
Senior Member
 
L'Avatar di luxorl
 
Iscritto dal: Oct 2003
Città: Pisa/Cosenza
Messaggi: 1364
[JAVA] Alberi e Metodo Ricorsivo per contare le foglie

Ciao,
ho come esercizio l'implementazione di un metodo ricorsivo con questa intestatura:

int calcola(AlberoBinario a)

che prende un albero binario e ritorna il numero di foglie che esso possiede.

Un albero binario è un insieme di nodi, che partono da un'unica radice e si raddoppiano ogni volta scendendo di livello... il nodo superiore è detto padre e i due nodi inferiori sono detti figli..

un nodo è detto foglia quando non possiede nessun figlio!!

Quindi il metodo deve ricorsivamente controllare tutti i nodi che non hanno nessun figlio e ritornarne l'esatto numero.

Questa è la soluzione a cui ho pensato.. sapreste dirmi se è giusta o se ho sbagliato qualcosa? Grazie

Codice:
public int calcola(AlberoBinario a){
if(a==null) return 0;  //se l'albero è uguale a null vuol dire che è finito e io sono uscito fuori dall'ultima foglia
int f=0;
if(a.figlioSX==null&& a.figlioDX==null) f++; //supponendo che a.figlioSX e DX ritornino true se il nodo ha figlio e false altrimenti
f=calcola(a.figlioSX);
f=calcola(a.figlioDX);
return f+=f;
}
Spero di essere stato abbastanza chiaro! Grazie a chi vorrà darmi il suo parere
__________________
luxorl è offline   Rispondi citando il messaggio o parte di esso
Old 15-02-2006, 13:51   #2
luxorl
Senior Member
 
L'Avatar di luxorl
 
Iscritto dal: Oct 2003
Città: Pisa/Cosenza
Messaggi: 1364
up
__________________
luxorl è offline   Rispondi citando il messaggio o parte di esso
Old 15-02-2006, 14:39   #3
Galotar
Utente sospeso
 
L'Avatar di Galotar
 
Iscritto dal: Jul 2002
Città: Ostia/Roma
Messaggi: 1191
Quote:
Originariamente inviato da luxorl
Ciao,
ho come esercizio l'implementazione di un metodo ricorsivo con questa intestatura:

int calcola(AlberoBinario a)

che prende un albero binario e ritorna il numero di foglie che esso possiede.

Un albero binario è un insieme di nodi, che partono da un'unica radice e si raddoppiano ogni volta scendendo di livello... il nodo superiore è detto padre e i due nodi inferiori sono detti figli..

un nodo è detto foglia quando non possiede nessun figlio!!

Quindi il metodo deve ricorsivamente controllare tutti i nodi che non hanno nessun figlio e ritornarne l'esatto numero.

Questa è la soluzione a cui ho pensato.. sapreste dirmi se è giusta o se ho sbagliato qualcosa? Grazie

Codice:
public int calcola(AlberoBinario a){
if(a==null) return 0;  //se l'albero è uguale a null vuol dire che è finito e io sono uscito fuori dall'ultima foglia
int f=0;
if(a.figlioSX==null&& a.figlioDX==null) f++; //supponendo che a.figlioSX e DX ritornino true se il nodo ha figlio e false altrimenti
f=calcola(a.figlioSX);
f=calcola(a.figlioDX);
return f+=f;
}
Spero di essere stato abbastanza chiaro! Grazie a chi vorrà darmi il suo parere
Leggendo il codice tu assegni ad "f" prima il conteggio delle foglie dei figli sinistri e poi riassegni sempre ad "f" quelle del figlio destro : in ultima analisi ritorni f(foglie ramo destro) + se stesso.
Io farei cosi :

public int calcola(AlberoBinario a){
if(a==null) return 0;
if(a.figlioSX==null&& a.figlioDX==null) return 1;
int g=calcola(a.figlioSX);
int h=calcola(a.figlioDX);
return g+h;
}

Prova e fammi sapere.
Mii che pippe mentali
__________________
Codice:
Ho concluso affari con : 8310(1,2),luxo,weather65,gokou,Zara,LotharInt,Mammabell,cionci,omerook,nathbigga,V0r[T3X],FatMas,3N20,smickys,CICUS,Dreamland,morpheus89,AMDman,Andi89,drive97,mich25,killerbox,abc3d,Sclergio,saint80,mazä,MR_GINO,OdinEidolon,ezekiel22

Ultima modifica di Galotar : 15-02-2006 alle 14:43.
Galotar è offline   Rispondi citando il messaggio o parte di esso
Old 15-02-2006, 16:15   #4
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Galotar, il tuo algoritmo ha un paio di problemi:
1) non devi ritornare g+h ma g+h+1
2) il secondo if è inutile

io lo farei così:
Codice:
int calcola(AlberoBinario a) {
	if (null == a) {
		return 0;
	}
	return calcola(a.figlioSX) + calcola(a.figlioDX) + 1;
}
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 15-02-2006, 16:27   #5
Galotar
Utente sospeso
 
L'Avatar di Galotar
 
Iscritto dal: Jul 2002
Città: Ostia/Roma
Messaggi: 1191
Quote:
Originariamente inviato da 71104
Galotar, il tuo algoritmo ha un paio di problemi:
1) non devi ritornare g+h ma g+h+1
2) il secondo if è inutile

io lo farei così:
Codice:
int calcola(AlberoBinario a) {
	if (null == a) {
		return 0;
	}
	return calcola(a.figlioSX) + calcola(a.figlioDX) + 1;
}
1)Perchè devi aggiungiere 1?
2)Se Figlio è null non dovrebbe ritornare 0?

Fammi capire non ho capito perchè sono errori.

Edito : adesso ho capito credevo avessi levato l'if con il ritorno 0.
Cmq dovrebbe funzionare pure il mio di algoritmo,il tuo è più elegante ed efficiente sicuramente.
__________________
Codice:
Ho concluso affari con : 8310(1,2),luxo,weather65,gokou,Zara,LotharInt,Mammabell,cionci,omerook,nathbigga,V0r[T3X],FatMas,3N20,smickys,CICUS,Dreamland,morpheus89,AMDman,Andi89,drive97,mich25,killerbox,abc3d,Sclergio,saint80,mazä,MR_GINO,OdinEidolon,ezekiel22

Ultima modifica di Galotar : 15-02-2006 alle 16:58.
Galotar è offline   Rispondi citando il messaggio o parte di esso
Old 15-02-2006, 17:12   #6
Qu@ker
Member
 
Iscritto dal: Apr 2004
Messaggi: 130
Quote:
Originariamente inviato da 71104
Codice:
int calcola(AlberoBinario a) {
	if (null == a) {
		return 0;
	}
	return calcola(a.figlioSX) + calcola(a.figlioDX) + 1;
}
Questo pero' calcola il numero dei nodi, non delle foglie.
Qu@ker è offline   Rispondi citando il messaggio o parte di esso
Old 15-02-2006, 17:13   #7
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da Galotar
1)Perchè devi aggiungiere 1?
2)Se Figlio è null non dovrebbe ritornare 0?

Fammi capire non ho capito perchè sono errori.

Edito : adesso ho capito credevo avessi levato l'if con il ritorno 0.
Cmq dovrebbe funzionare pure il mio di algoritmo,il tuo è più elegante ed efficiente sicuramente.
no, il mio non funziona perché ho letto solo adesso che l'algoritmo deve contare solo le foglie ^_^'
quello che ho scritto io conta tutti i nodi, invece per contare le foglie era corretto il tuo.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 15-02-2006, 17:13   #8
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da Qu@ker
Questo pero' calcola il numero dei nodi, non delle foglie.
appunto
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 15-02-2006, 17:26   #9
Galotar
Utente sospeso
 
L'Avatar di Galotar
 
Iscritto dal: Jul 2002
Città: Ostia/Roma
Messaggi: 1191
Quote:
Originariamente inviato da 71104
no, il mio non funziona perché ho letto solo adesso che l'algoritmo deve contare solo le foglie ^_^'
quello che ho scritto io conta tutti i nodi, invece per contare le foglie era corretto il tuo.

Miii che caciara st'algoritmo
__________________
Codice:
Ho concluso affari con : 8310(1,2),luxo,weather65,gokou,Zara,LotharInt,Mammabell,cionci,omerook,nathbigga,V0r[T3X],FatMas,3N20,smickys,CICUS,Dreamland,morpheus89,AMDman,Andi89,drive97,mich25,killerbox,abc3d,Sclergio,saint80,mazä,MR_GINO,OdinEidolon,ezekiel22
Galotar è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo M...
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi Recensione HUAWEI Mate X7: un foldable ottimo, m...
Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti Test in super anteprima di Navimow i220 LiDAR: i...
Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto Dark Perk Ergo e Sym provati tra wireless, softw...
4 TV da 55" in sconto: da 299€ a 99...
Altro che crisi: la PlayStation 6 potreb...
Per iniziare e non solo: DJI Neo a 149€,...
Il nuovo MacBook entry level potrebbe es...
PlayStation annuncia lo State of Play di...
Funzionalità top a un prezzo acce...
Lo strumento per gli aggiornamenti autom...
Imperdibile sconto sul roborock Saros Z7...
Google Pixel 10, altri 100€ di sconto su...
Chip sotto i 2 nanometri, l'Europa alza ...
La smart meno smart di tutte: #6 in azio...
Red Hat Enterprise Linux sbarca su AWS E...
Addio alle migliaia di cicli e anni di t...
Colpo di STMicroelectronics, un'intesa d...
La Ferrari elettrica si chiama Luce: ecc...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 07:37.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v