Ebene eines binären Baumes

JackintheBox

Mitglied
Hey, verzweifel grade etwas an folgender Aufgabe:

Ich moechte eine bestimmte Ebene eines binären Baumes ausgeben. Ich muss also ähnlich wie bei einer Breitensuche durch einen Baum gehen. Meine erste Idee war halt in dieser Reihnfolge alle Elemente in eine Schlange abzuspeichern, an stellen, an denen keine knoten mehr hängen einen NULL verweis, und dann einfach für die ebene 0 das erste element, für ebene 3 das 8. bis 15. elemente aus der schlange zu hohlen. was anderes fällt mir grad irgendwie nicht ein. nur hab ich keine ahnung wie ich nen baum so in eine schlange verfrachten kann. besonders ärgerlich ist, dass n übungsleiter an der uni ne sehr einfache version der breitensuche rekursiv in 3 zeilen oder so in der übung gezeigt hat, ich mich aber weder dran erinnern kann, noch meine notizen wiederfinde. is gräßlich :<
kann mir vieleicht jmd einen zündenden tipp geben?

lg 🙂
 
So in Pseudocode könnte es so aussehen:
Code:
void gibAus(Knoten n, int gesuchteEbene, int aktuelleEbene) {
  if (gesuchteEbene==aktuelleEbene) {
    Sysout(n);
    return;
  }
  if (n.linkesKind!=null) {
    gibAus(n.linkesKind, gesuchteEbene, aktuelleEbene+1);
  }
  if (n.rechtesKind!=null) {
    gibAus(n.rechtesKind, gesuchteEbene, aktuelleEbene+1);
  }
}

Angestoßen wird das ganze natürlich mit dem Wurzelknoten und aktuellerEbene 0
 
das Problem ist das die Aufgabenstellung ausdrücklich sagt, sie hätte gerne einen Baum und die auszugebene Ebene ( und ne angabe bezüglich der leerzeiche, irrelevant dafür) und sonst nichts als parameter. ist natürlich kein problem da einfach ne andere methode drin aufzurufen, bin mir nur nicht sicher ob das im sinne der aufgabe ist. :/
machs jetzt erstmal so, vieleicht kommt mir später ja noch ne andere idee.
danke schonmal!
 
Zuletzt bearbeitet:
Du kannst imho ruhig eine Methode schreiben, die eben den Baum und die Ebene als Parameter hat, aber dann die andere Methode mit angepassten Parametern aufruft.
 

Zurück
Oben