Tiefe im Binärbaum

Status
Nicht offen für weitere Antworten.

kwonilchang

Aktives Mitglied
Hallo!

Möchte in einem Binärbaum zu jedem Knoten die Tiefe ausgeben lassen. Das Prinzip eines Baumes und seiner Tiefe habe ich soweit verstanden, nur kann ich daraus kein Java-Programm machen. Habe mal an dieser Methode gebastelt:

Code:
int depth(BinaryNode n) { 
        int leftHeight; 
        int rightHeight; 
        
        if (n.left == null) { 
           leftHeight = -1; 
        } else { 
           leftHeight = depth(n.left); 
        } 
        if (n.right == null) { 
           rightHeight = -1; 
        } else { 
           rightHeight = depth(n.right); 
        } 
        return 1 + Math.max(leftHeight, rightHeight);
     }

Hierbei wird zwar eine Tiefe ausgegeben, aber in falscher Reihenfolge (Wurzel soll ja Tiefe 0 haben). Anscheinend verstehe ich noch nicht wirklich, was diese Methode eigentlich genau macht. Kann mir das jemand erklären oder vielleicht einen Tipp geben, wie ich die richtige Tiefe erhalte?

Danke schonmal!

Viele Grüße,

kwonilchang
 

Marco13

Top Contributor
Das was diese Methode ausrechnet, würde ich eher als die "Höhe" bezeichnen. Aber wie sagte schon mein Inf3-Dozent sinngemäß: Namen sind Schall und Rauch, es geht um das Zurechtfinden im abstrakten Gerüst der Definitionen. Wenn du etwas haben willst, was für die Wurzel 0 liefert, und für die Nachfolger der Wurzel dann 1, usw. dann mußt du der Methode wohl die Wurzel mit übergeben. Im Pseudocode wäre das dann ungefähr sowas wie
Code:
public int getDepth(Node node, Node root)
{
    if (root == null) return -1;
    if (node == root) return 0;
    int depthL = getDepth(node, root.left);
    if (depthL != -1) return 1+depthL;
    int depthR = getDepth(node, root.right);
    if (depthR != -1) return 1+depthR;
    return -1;
}
 

mabe83

Mitglied
Oder mit anderen Worten ausgedrückt:

Das was du da machen möchtest nennt man Traversierung. Im Prinzip es das ganz einfach. Du schaust dir, ausgehend vom Wurzelknoten, zuerst die linken Verzweigungen an und dann die rechten.
Der Algorithmus arbeitet rekursiv, d.h. in dem Beispiel, jedesmal wenn ein weitere Unterknoten entdeckt wurde (!= null), dann wird die Funktion "depth" aufgerufen, diesmal allerdings mit dem Unterknoten als Startknoten.
Der Spaß geht solange bis links / später rechts, kein Unterknoten mehr vorhanden ist.
Nun werden die Rekursionen aufgelöst. Du gibst vom tiefsten Knoten an immer 1 an die Aufrufende Funktion zurück. Im Endeffekt werden so alle Knoten aufaddiert.
Math.max(leftHeight, rightHeight) entscheidet noch welche Verzweigung die tiefste ist, denn die Tiefe orientiert sich am jeweils tiefsten Zweig (der linke oder der rechte).

Falls noch Unklarheiten bestehen, Wiki hilft da auch ganz gut: http://de.wikipedia.org/wiki/Binärbaum
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Tiefe Kopie einer Zeile eines zweidimensionalen Arrays Java Basics - Anfänger-Themen 1
T Rekursiv Tiefe eines binären Suchbaums ermitteln Java Basics - Anfänger-Themen 22
X Kopierkonstruktor / tiefe Kopie Java Basics - Anfänger-Themen 3
V Tiefe Kopie Java Basics - Anfänger-Themen 3
K Rot-Schwarz-Baum min und max-Tiefe Java Basics - Anfänger-Themen 1
Helgon Baumstruktur tiefe N erzeugen Java Basics - Anfänger-Themen 3
S Klassen Tiefe Kopie mittels Kopierkonstruktor Java Basics - Anfänger-Themen 6
N Tiefe im binären Suchbaum Java Basics - Anfänger-Themen 9
B Mehrdimensionales Array + Tiefe Java Basics - Anfänger-Themen 4
? clonen -tiefe Kopie Java Basics - Anfänger-Themen 6
M Binärer Baum Tiefe Java Basics - Anfänger-Themen 14
I Methoden aufrufe in die Tiefe Java Basics - Anfänger-Themen 5
F Tiefe eines Baumes Java Basics - Anfänger-Themen 6
Y Wie greift man auf die Knoten in einem Binärbaum zu? Java Basics - Anfänger-Themen 5
T Binärbaum-Suche Implementation Java Basics - Anfänger-Themen 6
A Binärbaum rekursiv durchsuchen und Referenz zurückgeben Java Basics - Anfänger-Themen 4
D Werte aus einem BinärBaum in einem Array speichern Java Basics - Anfänger-Themen 1
D Binärbaum Blätter finden und Ausgeben Java Basics - Anfänger-Themen 22
O BinärBaum einfügen Java Basics - Anfänger-Themen 13
E Erste Schritte Testklasse Binärbaum Java Basics - Anfänger-Themen 10
void19 Methoden Binärbaum Inorder Traversierung in Array speichern Java Basics - Anfänger-Themen 1
A Größten Eintrag aus Binärbaum löschen Java Basics - Anfänger-Themen 4
L Ganzen BinärBaum ausgeben? Java Basics - Anfänger-Themen 3
L Binärbaum (Stammbaum) Java Basics - Anfänger-Themen 8
S Binärbaum in PreOrder in ArrayList speichern Java Basics - Anfänger-Themen 0
J Methoden Binärbaum, Traversierung in Array speichern Java Basics - Anfänger-Themen 18
K BinärBaum Java Basics - Anfänger-Themen 4
J Max. Anzahl von Knoten im Binärbaum Java Basics - Anfänger-Themen 3
M Werte der Knoten in Binärbaum addieren (iterativ) Java Basics - Anfänger-Themen 6
C Binärbaum mit grafischer Ausgabe Java Basics - Anfänger-Themen 0
J Binärbaum formatiert ausgeben. Java Basics - Anfänger-Themen 7
P Listen sortieren mit Binärbaum gibt keine Ausgabe ab 10000 Integern Java Basics - Anfänger-Themen 14
E Binärbaum - von rekursiv zu iterativ Java Basics - Anfänger-Themen 10
W Größtes Element im unsortierten Binärbaum Java Basics - Anfänger-Themen 7
N Generischer Binärbaum - löschen Java Basics - Anfänger-Themen 1
M Binärbaum mit parent-Zeigern Java Basics - Anfänger-Themen 1
B Methoden BinärBaum als String Knoten löschen Java Basics - Anfänger-Themen 5
S Binärbaum kopieren Java Basics - Anfänger-Themen 6
B Binärbaum mit java implementieren! Java Basics - Anfänger-Themen 5
D Binärbaum Suche Java Basics - Anfänger-Themen 5
D Binärbaum probleme Java Basics - Anfänger-Themen 4
P Binärbaum - Primärschlüssel Java Basics - Anfänger-Themen 3
X Fehler Binärbaum Java Basics - Anfänger-Themen 6
PaulG Fragen zu Binärbaum Java Basics - Anfänger-Themen 21
N Binärbaum/Implementierung Java Basics - Anfänger-Themen 9
P Binärbaum Ordnungsproblem Java Basics - Anfänger-Themen 8
P Generischer Binärbaum (compareTo Frage) Java Basics - Anfänger-Themen 4
P einen binärbaum implementieren Java Basics - Anfänger-Themen 4
M Binärbaum - Problem bei Knoten anhängen / löschen Java Basics - Anfänger-Themen 5
B Binärbaum höhe herausfinden Java Basics - Anfänger-Themen 12
L Rot Scharz Baum von Binärbaum erben Java Basics - Anfänger-Themen 9
S Klassen Aufgabe: Binärbaum überprüfen Java Basics - Anfänger-Themen 16
S Binärbaum Java Basics - Anfänger-Themen 9
S Variable Parameterliste in Binärbaum Java Basics - Anfänger-Themen 2
N BinärBaum Hilfestellung Java Basics - Anfänger-Themen 8
S Binärbaum prüfen, ob sortiert oder unsortiert Java Basics - Anfänger-Themen 6
W Binärbaum zahlen addieren Java Basics - Anfänger-Themen 7
S Binärbaum - Klasse Knoten - Methode Suchen Java Basics - Anfänger-Themen 5
S Binärbaum Java Basics - Anfänger-Themen 7
I Binärbaum Java Basics - Anfänger-Themen 5
S Bitte um Hilfe beim unsortierten Binärbaum!! Java Basics - Anfänger-Themen 6
J Binärbaum getSize Java Basics - Anfänger-Themen 4
P Fragen zum Binärbaum Java Basics - Anfänger-Themen 3
S Binärbaum implementieren Java Basics - Anfänger-Themen 6
G generischer binärbaum Java Basics - Anfänger-Themen 9
G Binärbaum und Wrapperklassen Java Basics - Anfänger-Themen 6
F Binärbaum codieren. Codeproblem! Java Basics - Anfänger-Themen 4
D rekursion im binärbaum Java Basics - Anfänger-Themen 11
0 Binärbaum als verkettete Liste Java Basics - Anfänger-Themen 3
T Binärbaum - noch ein "klitzekleiner Fehler" Java Basics - Anfänger-Themen 4
B Binärbaum auf Vollständigkeit prüfen Java Basics - Anfänger-Themen 15
G Frage zur einfügen in einem Binärbaum Java Basics - Anfänger-Themen 21
G Binärbaum grafisch darstellen Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben