ciao a tutti.
devo implementare le operazioni di dato astratto dizionario con un albero binario di ricerca.
Sto implementando l'eliminazione di un nodo dell'albero, e da 2 giorni che giro su internet trovando vari esempi ma non funziona.
questo è il mio metodo remove:
codice:private Node remove(Comparable key, Node t){ if(t == null){ return null;} if(key.compareTo( t.getKey() ) < 0 ) { t.left = remove( key, t.left ); } else if(key.compareTo( t.getKey() ) > 0) { t.right = remove( key, t.right ); } else { if(t.right == null) { return t.left; } if(t.left == null) { return t.right; } Node temp; temp = minValue(t.right);//--------http://www.java2blog.com/2016/04/how-to-delete-node-from-binary-search.html t.setKey(temp.getKey()); t.setValue(temp.getValue()); System.out.println(t.getKey()); System.out.println(temp.getKey()); remove((Comparable)temp.getKey(), t.right); } return t; } private Node minValue(Node root) { while (root.left != null) { root = root.left; } return root; }
cosa c'è di sbagliato ?
dopo che trovo il minimo entra sempre nel if nodo == null
mi potreste spiegare come deve funzionare il metodo remove ?
grazie a tutti