Hallo,
bin gerade dabei einen balancierten trinären Baum aufzubauen.
Bin mir eigentlich auch recht sicher, dass ich schon na dran bin.
Mit "depth" bekomme ich die Tiefe des Baumes übergeben, soll heißen die Anzahl der Ebenen.
Also bei Tiefe 3 hat der Baum in der 1. Ebene einen Knoten, auf der 2. Ebene 3 Knoten, auf der 3. Ebene 9 Knoten usw.
Dazu hab ich einen Stack genommen, wo ich meine noch nicht benutzten Knoten ablege.
Den ersten Knoten erzeug ich selbst und leg ihn auf den Stack.
Und solange der Baum noch Ebenen hat erzeuge ich für jeden Knoten(den ich dann vom Stack lösche) 3 Unterknoten.
Diese Unterknoten lege ich dann zur Weiterverarbeitung auf den Stack.
Ich glaube meine Fehler liegt daran, dass ich nicht recht weiß wie ich die Knoten verknüpfen soll.
So, das war der Code.
Ich hoffe mir kann jemand weiterhelfen.
pinkrocker
bin gerade dabei einen balancierten trinären Baum aufzubauen.
Bin mir eigentlich auch recht sicher, dass ich schon na dran bin.
Mit "depth" bekomme ich die Tiefe des Baumes übergeben, soll heißen die Anzahl der Ebenen.
Also bei Tiefe 3 hat der Baum in der 1. Ebene einen Knoten, auf der 2. Ebene 3 Knoten, auf der 3. Ebene 9 Knoten usw.
Dazu hab ich einen Stack genommen, wo ich meine noch nicht benutzten Knoten ablege.
Den ersten Knoten erzeug ich selbst und leg ihn auf den Stack.
Und solange der Baum noch Ebenen hat erzeuge ich für jeden Knoten(den ich dann vom Stack lösche) 3 Unterknoten.
Diese Unterknoten lege ich dann zur Weiterverarbeitung auf den Stack.
Ich glaube meine Fehler liegt daran, dass ich nicht recht weiß wie ich die Knoten verknüpfen soll.
Java:
public static ThreeNode createThree(int depth) {
if (depth == 0)
return null;
Stack <ThreeNode> three = new Stack <ThreeNode>();
ThreeNode root = new ThreeNode();
three.push(root);
for (int h = 1; h <= depth; h++)
for (int i = 0; i < ((Math.pow(3, h)-1)/ (3-1)); i++) {
ThreeNode Node = (ThreeNode)three.pop();
ThreeNode leftNode = new ThreeNode();
three.push(Node.left);
ThreeNode middleNode = new ThreeNode();
three.push(Node.middle);
ThreeNode rightNode = new ThreeNode();
three.push(Node.right);
}
return root;
}
So, das war der Code.
Ich hoffe mir kann jemand weiterhelfen.
pinkrocker