public class Ancestros {

// Parte a.-

boolean esAncestroDe(Persona a, Persona b) {
  // Caso término de la recursión
  if (a==b) // también puede ser a.nombre.equals(b.nombre)
    return true;
  // Que la madre o el padre sean ancestros
  if (b.padre!=null && esAncestroDe(a, b.padre))
    return true;
  if (b.madre!=null && esAncestroDe(a, b.madre))
    return true;
  // caso ninguno de los dos es ancestro
  return false;
}

// Parte b.-

boolean sonParientesSanguineos(Persona a, Persona b) {
  // Caso a es ancestro de b
  if (esAncestroDe(a, b))
    return true;
  // Caso el padre o la madre son parientes
  if (a.padre!=null && sonParientesSanguineos(a.padre, b))
    return true;
  if (a.madre!=null && sonParientesSanguineos(a.madre, b))
    return true;
  // Caso ninguno de los dos son parientes
  return false;
}
}
