Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [JAVA] confronto tra Int e nodo di albero binario

    ho scritto una funzione per verificare se le foglie di un albero binario sono tutte pari..solo che non riesco a confrontare un nodo dell'albero con un valore intero...

    codice:
    public boolean fPari(BinNode t)
    {  
    
    
    	if(t!=null)
    		if((t.right ==null)&&(t.left ==null))
    			
    	
    			if(c.compareTo(t.key)%2==0)// avevo dichiarato c come Comparable ma mi diceva che andava inizializzata ma non so come!
    				return true;
    			else
    				return false;
    		else
    				return(fPari(t.left )&& fPari(t.right ));
    	else	
    	return true;
    	
    }
    credo che serva usare la comparable ma non so come...

    questa è la classe binNode usata:

    codice:
    private class BinNode { 
    	private Object key; // campo chiave 
    	private BinNode left; // link al figlio sinistro 
    	private BinNode right; // link al figlio destro 
    	private BinNode parent; // link al padre
    
    
    BinNode( Object c, BinNode sx, BinNode dx,  BinNode g ) { 
    	key = c; 
    	left = sx; 
    	right = dx; 
    	parent = g; 
    
    	if (sx != null) // aggiorna il campo padre del figlio sinistro (se esiste) 
    		sx.parent = this; 
    	if (dx != null) // aggiorna il campo padre del figlio destro (se esiste) 
    		dx.parent = this; 
    } }

    grazie...

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Ciao, ti faccio qualche domanda per capire meglio.
    Cosa intendi per pari? Una cosa tipo il primo nodo e' 0, il secondo e' 1, ecc e vuoi che le foglie siano nodi pari con questo sitema di numerazione (o uno analogo)?
    La variabile c nel codice sotto cos'e'? Un BinNode?
    Comunque compareTo serve a definire il piu' grande tra due oggetti omogenei e che implementano Comparable, quindi non credo ti serva.

  3. #3
    il mio obiettivo è sapere se tutte le foglie sono di valore pari.
    l'algoritmo è giusto perchè è stato fatto da un prof in pseudocodice...l'unico problema è l'implementazione in java.
    la variabile c non prenderla troppo in considerazione,l'ho messa come tentativo disperato...

    il problema è che non posso fare direttamente t.key%2==0

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Tu quindi vuoi che il valore di un nodo(il campo key) sia un numero pari.
    C'e' un motivo per cui lo salvi come Object?
    Se il valore e' sempre un numero non puoi salvarlo come int o Integer cosi' da poter usare l'operatore di modulo?

  5. #5
    in che senso lo salvo?se parli della classe binNode non può essere modificata..

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Si, intendevo come mai la variabile key era un object e volevo sapere se,come mi hai confermato, era previsto dall'esercizio che fosse cosi'.
    Mi fai un esempio di come costruisci un nodo, perche' non hai ancora detto cosa ci sta dentro key (in java tutti gli oggetti discendono da Object).
    Tipo se e' una stringa, puoi fare
    codice:
    Integer.parseInt((String)t.key)%2==0
    se e' un Integer,puoi fare
    codice:
    ((Integer)t.key).intvalue()%2==0
    se e' veramente un qualsiasi Object, temo che ci sia un po' di confusione sull'esercizio o sulla definizione di pari o dispari.
    Se magari hai il testo integrale dell'esercizio, postalo.

  7. #7
    il testo non ce l'ho purtroppo..

    comunque con if(((Integer)t.key).intValue() %2==0) ottengo proprio quello che desideravo...

    grazie 1000


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.