Se non ci sono motivazioni/necessità ben precise, tieni sempre i campi come 'private'.
Ok
NO! Il metodo equals deve ricevere un Object .... non un Persona. Quello che hai fatto è un overload ... non un override. Nessuno lo userebbe a meno che sia tu a invocarlo esplicitamente e su un reference di tipo Persona1 (quindi contesto molto limitato).
All'inizio del equals generalmente si testa l'oggetto usando l'operatore instanceof. Se non è del tipo della tua classe, si può ritornare false.
Non stai usando result1 e comunque è un po' "contorto" (si può scrivere diversamente e in modo più leggibile).
Ok
Che riga è la tua 46? Comunque il toString di Genitore è dubbio, in teoria non dovrebbe nemmeno compilare ... ci sono 2 variabili locali 't'.
Sì, perlomeno addFiglio, sortFigli e iterator sono corretti.
Certo, perché stai sfruttando e restituendo il Iterator del ArrayList.