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; }

Rispondi quotando