Hallo,
ich schaffe es nicht, Zahlen bis n in einen geordneten binären Suchbaum unterzubringen. (linker Ast kleiner; rechter Ast größer als Vaterknoten)
Bei meinem Beispiel möchte ich 60 Zahlen unterbringen, dh. hätte ich mir root = 30 angefangen.
Klasse Knoten
Klasse Hauptprogramm
Mit dem aktuellen Hauptprogramm erstelle ich einen Baum, bei dem jede Wurzel (bis auf root) nur 1 Nachfolger hat.
Ich suche bereits seit Stunden nach einer Rechenvorschrift, finde (oder verstehe?) aber keine. Ich wäre auch schon dankbar wenn mir jemand eben diese Rechenvorschrift vermittelt, die Implementierung mach ich dann gerne selber.
Danke für eure Hilfe!
ich schaffe es nicht, Zahlen bis n in einen geordneten binären Suchbaum unterzubringen. (linker Ast kleiner; rechter Ast größer als Vaterknoten)
Bei meinem Beispiel möchte ich 60 Zahlen unterbringen, dh. hätte ich mir root = 30 angefangen.
Klasse Knoten
Java:
public class Knoten {
Knoten links;
Knoten rechts;
int value;
public Knoten(int value) {
this.value = value;
}
public void insert(Knoten currentRoot, int value) {
//Füge neue Wurzel ein, falls Wert kleiner Vorgänger + nächste Wurzel = null
if(value < currentRoot.value) {
if(currentRoot.links == null) {
System.out.println(" Wert " + value + " links vom root " + currentRoot.value);
currentRoot.links = new Knoten(value);
}
//sonst rekursiver Aufruf mit nächstem Wurzelelement
else
insert(currentRoot.links, value);
}
//Füge neue Wurzel ein, falls Wert größer Vorgänger + nächste Wurzel = null
else if(value > currentRoot.value) {
if(currentRoot.rechts == null) {
System.out.println(" Wert " + value + " rechts vom root " + currentRoot.value);
currentRoot.rechts = new Knoten(value);
}
//sonst rekursiver Aufruf mit nächstem Wurzelelement
else
insert(currentRoot.rechts, value);
}
}
}
Klasse Hauptprogramm
Java:
import java.util.Scanner;
public class Hauptprogramm {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//Mein aktueller Versuch, Zahlen von 60 in einen Binärbaum unterzubringen
//root soll den Wert 20 haben (damit alle Äste gleich lang sind?)
Knoten root = new Knoten(30);
//Mit dieser Schleife erschaffe ich mir nur einen Baum, der nach links und rechts geht
for(int i = 1; i <= root.value; i++) {
if(i%2==0)
root.insert(root, root.value-i);
else
root.insert(root, root.value+i);
}
}
}
Mit dem aktuellen Hauptprogramm erstelle ich einen Baum, bei dem jede Wurzel (bis auf root) nur 1 Nachfolger hat.
Ich suche bereits seit Stunden nach einer Rechenvorschrift, finde (oder verstehe?) aber keine. Ich wäre auch schon dankbar wenn mir jemand eben diese Rechenvorschrift vermittelt, die Implementierung mach ich dann gerne selber.
Danke für eure Hilfe!