class Menneske { private Menneske mor, far; private int alder; private String navn; public Menneske(Menneske mor, Menneske far, int alder, String navn) { this.mor = mor; this.far = far; this.alder = alder; this.navn = navn; } // overloading - samme metodenavn, ulik signatur public Menneske(int alder, String navn){ this.alder = alder; this.navn = navn; } public void settMor(Menneske mor){ this.mor = mor; } public void settFar(Menneske far){ this.far = far; } public String hentFamilieTre(){ return familieTreRekursjon(""); // starter rekursive kall } private String familieTreRekursjon(String utskrift) { String tekst = "\n" + utskrift + this; // basis tilfelle - stopper her if (mor == null && far == null){ return tekst; } // oppgave i det rekursive kallet if (mor != null){ tekst += mor.familieTreRekursjon(utskrift + " "); } if (far != null){ tekst += far.familieTreRekursjon(utskrift + " "); } return tekst; } // overloading - samme metode, ulik signatur public void finnRelasjon(Menneske leterEtter){ finnRelasjon(leterEtter, ""); } private void finnRelasjon(Menneske leterEtter, String relasjon){ // basis tilfelle if (this == leterEtter){ System.out.println("Navn: " + this.navn + ", Relasjon: " + relasjon); return; // stopper her } // rekursive kall if (mor != null) { mor.finnRelasjon(leterEtter, relasjon + "mor"); } if (far != null) { far.finnRelasjon(leterEtter, relasjon + "far"); } } // bygge oss opp helt til Menneske objekt uten ref til mor/far public Menneske finnEldsteIFamilietre(){ // basis tilfelle: uten ref til mor og far objekter if (mor == null && far == null){ return this; } Menneske eldsteMorSide = null; Menneske eldsteFarSide = null; if (mor != null){ eldsteMorSide = mor.finnEldsteIFamilietre(); } if (far != null){ eldsteFarSide = far.finnEldsteIFamilietre(); } Menneske eldste = this; if (eldsteMorSide != null ){ if (eldste.alder < eldsteMorSide.alder){ eldste = eldsteMorSide; } } if (eldsteFarSide != null ){ if (eldste.alder < eldsteFarSide.alder){ eldste = eldsteFarSide; } } return eldste; } @Override public String toString(){ return navn + "(" + alder + ")"; } }