Salve, io devo fare questo esercizio:
"Scrivere la funzione public static <E> int countIntNodes(Tree<E> T). La funzione deve effettuare una visita (ricorsiva) postorder dell’albero T e restituire il numero di nodi interni dell’albero."
Io ho fatto così, ma mi sembra un pò forzato. Avete qualche idea? Grazie a tutti!
codice:
public static <E> int countIntNodes(Tree<E> T) {
if(T.isEmpty()) throw new EmptyTreeException("L'albero è vuoto");
return count(T,T.root()) + 1;
}
public static <E> int count(Tree<E> T, Position<E> p) {
int somma = 0;
if(T.isExternal(p))
return -1;
if(T.isInternal(p)) {
for(Position<E> v : T.children(p)) {
somma = somma + 1 + count(T,v);
}
}
return somma;
}