Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Snouty
Anmeldungsdatum: 16.06.2005 Beiträge: 1 Wohnort: Saarbrücken
|
Verfasst am: 16. Jun 2005 13:11 Titel: Höhe Binärbaum |
|
|
Gegeben sei ein binärer Baum T. Geben Sie einen Algorithmus in Pseudocode an, der die Höhe h des Baums T ermittelt, wobei h die Anzahl der Knotenebenen des Baumes zählt, d.h. ein Baum mit nur einem Knoten hat bereits die Höhe 1.
Kann mir da jemand helfen?
ich bekomm das irgendwie nichtgebacken :-(
thx schonmal im vorraus |
|
Nach oben |
|
|
|
Tobias
Anmeldungsdatum: 15.02.2005 Beiträge: 149
|
Verfasst am: 16. Jun 2005 14:23 Titel: |
|
|
Ist der Baum vollständig? D.h. eine neue Ebene wird nur aufgemacht wenn die alten alle voll sind? Wenn ja, dann kann man leicht die Höhe über den Logarithmus dualis und die Anzahl der Knoten berechnen. Ansonsten muss man ihn angemessen traversieren. |
|
Nach oben |
|
|
physikerin Gast
|
Verfasst am: 16. Jun 2005 14:37 Titel: |
|
|
@tobias:
dasgleiche wollte ich auch gerade fragen
@snouty:
Grundlagen findest du hier:
http://www.iti.fh-flensburg.de/lang/algorithmen/grundlagen/graph.htm
--> Baum
Ein vollständiger binärer Baum T mit n Knoten hat eine Tiefe von
d(T)) = int(log(n)).
Bezüglich des Algorithmus, wie Tobias die Frage: Ist der Baum vollständig?
Gruß
Christiane |
|
Nach oben |
|
|
Erchamion
Anmeldungsdatum: 07.06.2005 Beiträge: 13
|
Verfasst am: 16. Jun 2005 14:57 Titel: |
|
|
Wenn er nicht vollständig ist ging es evtl. so in O(n) Schritten:
Code: |
function Binaerbaum.hoehe :integer
if istBlatt
return 1
else
hoeheLinks := linkerTeilbaum.hoehe
hoeheRechts := rechterTeilbaum.hoehe
return max(hoeheLinks, hoeheRechts)+1 |
Ohne Garantie, dass es so stimmt |
|
Nach oben |
|
|
Gast
|
|
Nach oben |
|
|
Crotaphytus
Anmeldungsdatum: 08.05.2005 Beiträge: 213
|
Verfasst am: 16. Jun 2005 18:55 Titel: |
|
|
Also, ich würd eher davon ausgehen, dass der Baum nicht vollständig ist, sonst wär die Aufgabenstellung ja sinnlos. Dann müsst man ja nicht groß anfangen Knotenebenen zu zählen, eben weil man das dann schön einfach mitm Logarithmus ausrechnen kann.
So stimmt auf jeden Fall der Code von Erchamion. Allerdings stellt sich die Frage, ob dir auch klar ist was da gemacht wird, immerhin sollst du das ja verstehen und nicht einfach nur ne Lösung haben... _________________ Genie oder Wahnsinn? Wer kann es wissen... |
|
Nach oben |
|
|
Gast
|
Verfasst am: 20. Jun 2005 00:29 Titel: |
|
|
Also snouty - gecheckt?
Das ganze machst du am besten rekursiv:
so in der Art: ...
funktion hoehe(baum T) {
wenn knoten extern: hoehe = 1; (oder 0 - je nachdem wie das bei dir definiert ist...)
wenn (linkes kind und rechtes kind existieren)
hoehe = 1 + max {hoehe linkes kind, hoehe rechtes kind}
wenn nur linkes kind existiert: hoehe = hoehe linkes kind +1;
wenn nur rechtes kind existiert: hoehe = hoehe rechtes kind + 1;
}
Also, wenn du dir das mal aufmalst, wirst du sehen, dass das ziemlich intuitiv ist...
Viel Erfolg! |
|
Nach oben |
|
|
gast Gast
|
Verfasst am: 20. Feb 2006 11:39 Titel: fehlt was |
|
|
ganz am ende muss noch wenn keines von allen der fall ist return 1 wenn er an einem punkt ist der keine linken und rechten nachfolger hat |
|
Nach oben |
|
|
|