Quello che dice Uccio87 è questo:
Un albero vuoto (null) è completo
Un albero non vuoto è completo se:
1) i sottoalberi sx e dx sono completi
2) ed hanno la stessa altezza
Sulla base di questo Mr.Bloom il tuo esempio continua a funzionare ?
Inoltre il metodo isComplete deve usare un solo metodo ricorsivo, in modo da calcolare allo stesso tempo altezza dell'albero o del sottoalbero esaminato
Io farei così comunque in risposta ad Uccio87
codice:
public boolean isComplete() {
return isComplete(root) > -2;
}
public boolean isComplete(Node nd) {
int hl, hr;
if (nd == null) return -1; // l'albero vuoto (== null) è completo
hl = isComplete(nd.left);
hr = isComplete(nd.right);
if (hl != hr) return -2; // Se uno dei sotto alberi è null l'albero non è completo, e termino di esplorare l'albero
else return 1 + Math.max(hl, hr); // Se l'altezza del sottoalbero sinistro è uguale all'altezza del sottoalbero di destra restituisco restituisco l'altezza dell'albero
}
Che ne dite ?