Anzahl der Knoten eines Binärbaumes

Dezarius

Grünschnabel
Moin :)

ich hänge momentan an einer Stelle meines Codes. Ich habe einen Binärbaum aus zufälligen Zahlen erstellt. Dieser Baum ist dabei aber auch nach der Größe sortiert (Erste Zahl ist Wurzel. Wenn die nächste Zahl kleiner ist, dann geht sie links rann sonst rechts. Wenn nun ne Zahl kommt die kleiner ist als die Wurzel geht aber größer als die Zahl dort, hängt sie sich an diesen Knoten rechts an (wenn sie kleiner wäre links)) Ich hoffe ihr habt verstanden, wie ich das mein. Das erstellen dieses Binärbaumes hab ich hinbekommen. Ich hab die Klasse Node:

private class Node {
Node left;
Node right;
double value;

Node(double value, Node left, Node right) {
this.value = value;
this.left = left;
this.right = right;
}
}

Ich hab eine Node die first heißt und immer die erste Node im Baum ist und die Node queueStart, die zwar oft = first ist, aber auch durch z.B. queueStart = queueStart.right; verschoben werden kann.
Nun will ich die größe dieses Baumes bestimmen, ohne zu wissen, wie viele Zahlen ich in den Baum eingefügt habe (20). wichtig ist nur, dass meine Funktion public int size() keinen Input hat. Sie kann ja auf alle Nodes zugreifen, jedoch können ihr halt keine übergeben werden.

Habt ihr eine Idee, wie man die Anzahl der Knoten bestimmen kann? Hab es schon seit mehreren Stunden probiert, komme aber nie aufs richtige Ergebnis sondern bestimme eher, wie lang der Zweig ganz links/rechts ist. Hoffe ihr findet eine Lösung.

Mit freundlichen Grüßen,
Dezarius
 
Hi

da braucht man nur eine kleine rekursive Funktion:
Java:
public long size() {
    long sum = 1;
    if(this.left != null) sum += left.size();
    if(this.right != null) sum += right.size();
    return sum;
}
 

Neue Beiträge

Zurück