[Java] Verifica se l'albero binario è triangolare
Inviato: 01/08/2017, 06:36
Ciao a tutti! Ho un dubbio riguardo a un algoritmo che ho appena scritto. Mi sembra troppo breve rispetto alle alternative della soluzione quindi forse ho sbagliato ma non trovo l'errore.
Forse i confronti con null non vanno bene?. E' da un sacco che non studio java
La mia idea è che se un albero binario è triangolare, allora lo sono anche i sui sotto-alberi. A quanto pare risulta O(n).
La consegna è :
La mia soluzione:
Forse i confronti con null non vanno bene?. E' da un sacco che non studio java
La mia idea è che se un albero binario è triangolare, allora lo sono anche i sui sotto-alberi. A quanto pare risulta O(n).
La consegna è :
La mia soluzione:
- Codice:
static <T> boolean isTriangular(BinaryTree<T> a)
{
return isTriangularPos(a.root());
}
static <T> boolean isTriangularPos(Position<T> v)
{
if(v.hasLeft()&&v.hasRight())
{
if (v.left().isExternal()||v.right().isExternal())
return v.left().isExternal()==v.right().isExternal();
return isTriangularPos(v.left())&&isTriangularPos(v.right());
}
return v.hasLeft()==v.hasRight();
}