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

    Problema inserimento nodo alberi in un array

    Salve ragazzi, ho un problema con questo esercizio:
    codice:
    Si fornisca un'efficiente implementazione dell'interfaccia
    BSTSet<E>, come mostrata nella pagina successiva,
    rappresentante un albero binario di ricerca (BST) i cui nodi
    sono degli insiemi contenti elementi di tipo generico <E>.
    Gli insiemi contengono elementi ordinabili. Ciascun insieme è
    rappresentato dal suo elemento con valore minore. All'interno
    dell'albero gli insiemi sono inseriti in base al loro
    elemento rappresentante. Si assuma che ogni insieme non
    contenga più 20 elementi.
    L'implementazione dell'albero dovrà essere realizzata
    utilizzando la struttura [parent/left/right] all'interno
    della classe nodo, che dovrà essere denominata SetNode<E>.
    L'implementazione del metodo search() è facoltativa, così
    come la gestione delle eccezioni all'interno delle classi (Se
    il metodo search() non viene implementato il corpo dovrà
    essere lasciato vuoto).
    Realizzare in seguito, mediante il metodo main() della
    classe, un programma Java che prenda in input un file di
    testo contenente un elenco di insiemi di interi da inserire
    in un albero (costruisce un albero di insiemi di interi) e
    restituisca in output un file di testo contenente alcune
    informazioni relative all'albero.
    
    File di input e output:
    Il file di input contiene l'elenco degli insiemi, uno per
    riga, contenuti nei nodi dell'albero. Ogni insieme è
    descritto da una sequenza di valori interi separati da uno
    spazio e terminanti con un punto e virgola.
    La prima riga del file di output contiene tre numeri interi:
    il numero di nodi, il numero di elementi e il valore più
    piccolo dell'albero. Tali valori sono relativi all'albero
    iniziale dopo aver applicato 5 operazione extracMinimum().
    Segue la visita inorder dello stesso albero con uni insieme
    per ogni riga
    
    Interfaccia BSTSet
    import java.util.*;
    public interface BSTSet<E extends Comparable> {
    public int nodes ();
    // ritorna il numero di nodi dell'albero
    public int elements ();
    // ritorna il numero complessivo di elementi di tipo E
    public E getMinimum ();
    // ritorna l'elemento più piccolo contenuto nei nodi dell'albero
    public SetNode<E> search (E e);
    // ritorna il nodo contenente l'elemento e
    public void insert (SetNode<E> node);
    // aggiunge all'albero un nuovo nodo
    public SetNode<E> getRoot ();
    // ritorna la radice dell'albero
    public SetNode<E>[] inorder();
    // ritorna un array con gli insiemi dell'albero in ordine inorder
    public E extractMinimum ();
    // elimina e ritorna l'elemnto più piccolo dell'albero
    }


    Ho problemi nell'inserimento: questo è il mio codice:
    codice:
    public void insert(SetNode<E> node)
    	{
    		if(nodes()==0)
    			set[0]=node;
    		else
    			{
    			    int j=nodes-1;
    			    while(j>0 && set[j-1].compareTo(node)>0)//qui mi dà l'errore
    			   set[j]=set[j-1];
    			    nodes++;
    			}
    	}
    Mi dà però il seguente errore: mioAlbero.java:82: cannot find symbol
    symbol : method compareTo(SetNode<E>)
    location: class SetNode<E>
    while(j>0 && set[j-1].compareTo(node)>0)

    Come posso sistemarlo?grazie a tutti

  2. #2
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    Non hai fornito il codice della classe SetNode, quindi non posso esaminarlo.
    In ogni caso, il compilatore non riesce a trovare il metodo compareTo(SetNode<E>) che ti segnala. Potrebbe essere che:
    - il metodo non sia definito
    - il metodo sia definito, ma riceva un parametro diverso da SetNode<E>

  3. #3
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    int j=nodes-1;

    nodes è una funzione da quanto ho capito

    int j=nodes()-1;

  4. #4
    Originariamente inviato da desa
    Non hai fornito il codice della classe SetNode, quindi non posso esaminarlo.
    In ogni caso, il compilatore non riesce a trovare il metodo compareTo(SetNode<E>) che ti segnala. Potrebbe essere che:
    - il metodo non sia definito
    - il metodo sia definito, ma riceva un parametro diverso da SetNode<E>
    Si scusa, eccolo:
    codice:
    public class SetNode<E>
    {
    	protected SetNode<E> parent, left, right;
    	protected E info;
    	
    	public SetNode()
    	{
    		info=null;
    		parent=null;
    		left=null;
    		right=null;
    	}
    	
    	public SetNode<E> getParent()
    	{
    		return parent;
    	}
    	
    	public void setParent(SetNode<E> parent)
    	{
    		this.parent=parent;
    	}
    	
    	public SetNode<E> getLeft()
    	{
    		return left;
    	}
    	
    	public void setLeft(SetNode<E>left)
    	{
    		this.left=left;
    	}
    	
    	public SetNode<E> getRight()
    	{
    		return right;
    	}
    	
    	public void setRight(SetNode<E> right)
    	{
    		this.right=right;
    	}
    	
    	public E getInfo()
    	{
    		return info;
    	}
    	
    	public void setInfo(E info)
    	{
    		this.info=info;
    	}
    }

  5. #5
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    devi implemntare l'intefraccia Comparable e fare l'overraide del metodo compareTo

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.