Salve, io devo fare questo esercizio:"Scrivere la funzione public static <E>true f(BinaryTree<E> T).
Istruzioni per lo svolgimento dell’esercizio:
• La funzione deve effettuare una visita ricorsiva di T e restituire true se e solo se ciascun
nodo interno ha due figli e questi contengono entrambi lo stesso elemento.
• Se T è vuoto la funzione deve lanciare l’eccezione EmptyTreeException."
Io ho fatto così, ma restituisce sempre false. Potete aiutarmi? Grazie mille!
codice:
public static <E> boolean f(BinaryTree<E> T) {
if(T.isEmpty()) throw new EmptyTreeException("L'albero è vuoto");
return visita(T,T.root(),true);
}
private static <E> boolean visita(BinaryTree<E> T, Position<E> p, boolean a) {
if(T.isInternal(p)) {
for(Position<E> v : T.children(p))
a = visita(T,v,a);
}
if(!T.hasLeft(p) || !T.hasRight(p)) a = false;
else if(!T.left(p).element().equals(T.right(p).element())) a = false;
return a;
}