Ciao, ho un progetto di programmazione in cui utilizzo fondamentalmente un albero di ricerca binario per implementare una coda di priorità minima / massima. Sto avendo problemi con i metodi popMin / popMax. Ottengo come ottenere il nodo minimo / massimo e rimuovere un nodo, ma ho problemi a eseguire entrambi con un singolo metodo ricorsivo.
Non capisco come posso restituire il valore nullo da assegnare al valore sinistro del nodo genitore e anche restituire il valore minimo al chiamante del metodo originale.
In questo momento sto solo usando una variabile di classe min per registrare il minimo, ma non sono sicuro che sia assolutamente necessario. La mia classe nodo non è consentita un membro dati padre.
Ecco il mio codice:
private int min;
public int removeMin() {
if (root == null) { //if Queue is empty
System.out.println("Queue is empty");
return 0;
}
root = removeMin(root);
return min;
}
private Node removeMin(Node n){
if (n.left == null) {
min = n.key;
if (n.right != null){ //if a right child exists
size--;
return n.right;
}
else {
size--;
n = null;
return n;
}
} else {
n.left = removeMin(n.left);
return n;
}
}