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