|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Nov 2002
Messaggi: 4329
|
[java]che c e di sbagliato in sta ricerca in un albero binario???
public boolean cercaNodo(Node newNode,Integer b)
{ if(newNode.data.compareTo(b)==0) { return true; } System.out.println("primo if saltato"); if(newNode.data.compareTo(b)<0) { if(newNode.left != null) cercaNodo(newNode.left,b); } System.out.println("secondo if saltato"); if(newNode.data.compareTo(b)>0) { if(newNode.right != null) cercaNodo(newNode.right,b); } System.out.println("terzo if saltato"); return false; } ------------------------------------------------------------------ che viene chiamato cosi ----------------------------------------- public boolean cerca(int x) { Integer ogg = new Integer(x); return root.cercaNodo(root,ogg); } ---------------------------------------- e richiamato cosi System.out.println(blabla.cerca(10)); ???????????????????? se cerco il primo elemento ed è uguale al primo elemento me lo trova, in tutti gli altri casi no.......perche???
__________________
|18k+|slk800|a7n8x|1Gb/ddr400|Gf4mx440|Pio108|WD 160Gb|Case|Uni|Album|AnimeClick|OneManga| |ClassicThrash!|BNR Metal|TrueMetal|Dime|Chuck| |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2002
Messaggi: 4329
|
se inserisco numeri da 3 a 20 compreso e cerco lo zero mi da sta roba:
primo if saltato secondo if saltato primo if saltato secondo if saltato primo if saltato secondo if saltato primo if saltato secondo if saltato primo if saltato secondo if saltato primo if saltato secondo if saltato primo if saltato secondo if saltato primo if saltato secondo if saltato primo if saltato secondo if saltato primo if saltato secondo if saltato primo if saltato secondo if saltato primo if saltato secondo if saltato primo if saltato secondo if saltato primo if saltato secondo if saltato primo if saltato secondo if saltato primo if saltato secondo if saltato primo if saltato secondo if saltato primo if saltato secondo if saltato terzo if saltato terzo if saltato terzo if saltato terzo if saltato terzo if saltato terzo if saltato terzo if saltato terzo if saltato terzo if saltato terzo if saltato terzo if saltato terzo if saltato terzo if saltato terzo if saltato terzo if saltato terzo if saltato terzo if saltato terzo if saltato false ...................................se cerco il 3 mi da true se cerco 4 stampa questo primo if saltato secondo if saltato terzo if saltato ???
__________________
|18k+|slk800|a7n8x|1Gb/ddr400|Gf4mx440|Pio108|WD 160Gb|Case|Uni|Album|AnimeClick|OneManga| |ClassicThrash!|BNR Metal|TrueMetal|Dime|Chuck| |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Jul 1999
Città: Torino
Messaggi: 2221
|
Innanzitutto se davvero vuoi dare un senso a quelle System.out di debug devi:
Codice:
public boolean cercaNodo(Node newNode,Integer b) { if(newNode.data.compareTo(b)==0) { return true; } else { System.out.println("primo if saltato"); if(newNode.data.compareTo(b)<0) { if(newNode.left != null) cercaNodo(newNode.left,b); } else { System.out.println("secondo if saltato"); if(newNode.data.compareTo(b)>0) { if(newNode.right != null) cercaNodo(newNode.right,b); } else { System.out.println("terzo if saltato"); return false; } } } } inoltre inutile controllare ad es che newNode.data.compareTo(b)>0 se era già = 0 Poi per verificare la correttezza dell'algoritmo devi postare anche le altre classi utilizzate, se non se ne verifica la corretteza non si può dire nulla... Ultima modifica di cn73 : 11-12-2003 alle 09:59. |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Jul 1999
Città: Torino
Messaggi: 2221
|
Prego
![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:05.