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