![]()
Non va...preciso che nel compareTo confronto l'elemento di un nodo e quindi uso cosė compareTo nella classe BSTNode<E>
L'interfaccia diventa:codice:class BST<E extends Comparable> implements Comparable<BST<E>> { private BSTNode<E> root; private int nodes; private final int CAPACITY; public BST(int CAPACITY) { this.CAPACITY=CAPACITY; root=null; nodes=0; } public BSTNode<E> getRoot(){return root;} public void setRoot(BSTNode<E> root){this.root=root;} public int nodes(){return nodes;} public void addNodo(BSTNode<E> nodo) { if(nodes==0) setRoot(nodo); else if(nodes<CAPACITY){ boolean inserito=false; BSTNode<E> tmp=getRoot(); while(!inserito){ if(tmp.getElement().compareTo(nodo.getElement())<0) { if(!(tmp.hasRight())){ tmp.setRight(nodo); inserito=true; } else tmp=tmp.getRight(); } else if(tmp.getElement().compareTo(nodo.getElement())>0) { if(!(tmp.hasLeft())){ tmp.setLeft(nodo); inserito=true; } else tmp=tmp.getLeft(); } } } nodes++; } public E getMax(){ if(getRoot()==null) return null; BSTNode<E> tmp=getRoot(); while(tmp.hasRight()) tmp=tmp.getRight(); return (E)tmp; } public E remove() { if(nodes==0) return null; else{ BSTNode<E> remove=(BSTNode)getMax(); if(!(remove.hasRight()) && !(remove.hasLeft())) { remove.getParent().setRight(null); remove.setParent(null); nodes--; return (E)remove; } else{ remove.getLeft().setParent(remove.getParent()); remove.getParent().setRight(remove.getLeft()); remove.setLeft(null); nodes--; return (E)remove; } } } public boolean find(E label) { boolean trovato=false; BSTNode<E> tmp=getRoot(); BSTNode<E> node=new BSTNode(label); while(tmp!=null){ if(tmp.getElement().compareTo(node.getElement())>0) tmp=tmp.getLeft(); else if(tmp.getElement().compareTo(node.getElement())<0) tmp=tmp.getRight(); else trovato=true; } return trovato; } }
E in Insieme ho:codice:interface BSTSet270710<E extends Comparable>
Ma cosė non va, mi dā sempre errore nell'uso del comparable...codice:class Insieme<E extends Comparable> implements Comparable<Insieme<E>>
Credo dipenda sempre dal tipo che passo a Comparable.....codice:BST is not abstract and does not override abstract method compareTo(BST<E>) in java.lang.Comparable class BST<E extends Comparable> implements Comparable<BST<E>>
P.S. ma nella classe insieme che implementa tra l'altro l'interfaccia BSTSet non dovrei avere tra l'altro una dichiarazione cosė?
codice:class Insieme<E extends Comparable> implements Comparable<Insieme<E>>, BSTSet270710<E>

Rispondi quotando