M
MintMinit
Gast
Halli Hallo,
bin gerade dabei für einen binären Baum die Tiefe zu schreiben. Versucht hab ich es mit folgenden Methoden:
Wenn ich jetzt folgenden Baum aufbaue(dargestellt als ausschließlich Knoten):
Wenn ich jetzt nach dem Knoten F suche, dann hat er eine Tiefe von 1, was ja OK ist.
Wenn ich nach D suche, dann hat der auch nur eine Tiefe von 1.
Wenn ich nach A oder E suche, dann hat er auch nur ne Tiefe von 1.
Wenn ich nach M suche, dann gibt mir das Programm ne Tiefe von 2 aus.
Kann mir jemand sagen, was da falsch läuft?
Danke.[/img]
bin gerade dabei für einen binären Baum die Tiefe zu schreiben. Versucht hab ich es mit folgenden Methoden:
Code:
public int depth(Node n){
// Liefert die Tiefe des Knotens
return depth(root, n.data);
}
private int depth(Node n, String elem){
// Liefert die Anzahl der Kanten vom Konten n bis zu dem (eindeutigen) Element,
// das "elem" als Wert (in der Variablen data) enthält.
// Hinweis: ob ein Knoten das Element "elem" enthält, prüfen Sie mit der
// String-Methode "equals"; also z.B. n.data.equals(elem)
// die Prüfung auf "n.data == elem" führt nicht zum gewüschnten Ergebnis!
int lDepth=0;
int rDepth=0;
if (n.isLeaf()) return 0;
if(n.left!=null&&n.data.equals(elem))lDepth = depth(n.left,elem); // Tiefe des li. Unterbaums berechnen
if(n.right!=null&&n.data.equals(elem))rDepth = depth(n.right,elem); // Tiefe des re. Unterbaums berechnen
if (lDepth < rDepth) // Tiefe des tieferen Unterbaums
return (1+lDepth); // um 1 erhöht zurückliefern
else
return(1+rDepth);
}
Wenn ich jetzt folgenden Baum aufbaue(dargestellt als ausschließlich Knoten):
Code:
M
F S
D P X
A E
Wenn ich jetzt nach dem Knoten F suche, dann hat er eine Tiefe von 1, was ja OK ist.
Wenn ich nach D suche, dann hat der auch nur eine Tiefe von 1.
Wenn ich nach A oder E suche, dann hat er auch nur ne Tiefe von 1.
Wenn ich nach M suche, dann gibt mir das Programm ne Tiefe von 2 aus.
Kann mir jemand sagen, was da falsch läuft?
Danke.[/img]