Peter: Rekursion Stammbaum durchlaufen

Beitrag lesen

Hallo

Ich blicke nicht mehr durch. Seit Stunden versuche ich einen vorgegebenen Stammbaum zu durchlaufen. Gegeben ist eine Klasse EmptyPerson:

class EmptyPerson extends Person {
    public boolean isEmpty() {
        return true;
    }
    public String getName() {
        return "";
    }
    public int getAge() {
        return 0;
    }
    public Person getFather() {
        return empty;
    }
    public Person getMother() {
        return empty;
    }
}

und eine Klasse Person

class Person {
    static Person empty = new EmptyPerson();
    String name;
    int age;
    Person father, mother;

public boolean isEmpty() {
        return false;
    }
    public String getName() {
     String name="name";
        return name;
    }
    public int getAge() {
        return age;
    }
    public Person getFather() {
        return father;
    }
    public Person getMother() {
        return mother;
    }

Mit Hilfe Rekursion oder Iteration soll nun die älteste Person im Stammbaum zurückgegeben werden

public Person eldestPerson() {}

Ich habe das so versucht:

public int maxAge() {
//liest das Alter der ältesten Person aus

if(this.isEmpty()) {
      return empty.getAge();
     }

int i = Math.max(this.getAge(),getFather().maxAge());
     int j = Math.max(this.getAge(),getMother().maxAge());
     return Math.max(i,j);
 }

Aber so kann ich nur das Alter zurückgeben und nicht das Objekt...

also hab ichs so versucht:

public String eldestPerson() {
        if(myEldestFather().getAge()>myEldestMother().getAge()) {
         return myEldestFather();
        }else{
         return myEldestMother();
        }
    }

public Person myEldestFather() {
     if(getAge()==maxAge()) {
      return this;
     }else {
      return getFather().myEldestFather();
     }
    }

public Person myEldestMother() {
     if(getAge()==maxAge()) {
      return this;
     }else {
      return getMother().myEldestMother();
     }
    }

Stimmt aber auch nicht. *Verzeiflung*

Ich habe auch schon versucht alle Personen in einen Vektor zu schreiben um das ganze dann iterativ auszulesen, ist mir aber auch nicht gelungen...

Wäre schön wenn da jemand wäre der mir helfen könnte.

Gruss Peter