Ich soll eine Prozedur schreiben, die aus einem gegebenen Array a ein Binärtree macht.
a[0] ist dann die Wurzel, der linke Nachfolger der Wurzel ist a[1], der rechte Nachfolger ist a[2].
a[1] hat dann die Nachfolger a[3] und a[4] , a[2] hat a[5] und a[6] als Nachfolger usw.
Allgemein gilt: Der linke Nachfolger von a ist a[2*i+1] und der rechte Nachfolger von
a ist a[2*i+2]. Ist der Index 2*i+1 (bzw. 2*i+2) außerhalb des Arrays, so gibt es keinen
linken (bzw. rechten) Nachfolger.
Zum Erzeugen des Baums gibts solche Methoden:
Ich hab zB. sowas geschrieben, allerdings weiss ich nicht genau wie ich weitermachen muss:
=> Dann hab ich schonmal die ersten 3 Knoten, aber wie kann ich machen dass der gesamte Baum erzeugt wird, ich denk mal da muss eine Schleife rein, nur wie genau darauf komme ich nicht.
a[0] ist dann die Wurzel, der linke Nachfolger der Wurzel ist a[1], der rechte Nachfolger ist a[2].
a[1] hat dann die Nachfolger a[3] und a[4] , a[2] hat a[5] und a[6] als Nachfolger usw.
Allgemein gilt: Der linke Nachfolger von a ist a[2*i+1] und der rechte Nachfolger von
a ist a[2*i+2]. Ist der Index 2*i+1 (bzw. 2*i+2) außerhalb des Arrays, so gibt es keinen
linken (bzw. rechten) Nachfolger.
Zum Erzeugen des Baums gibts solche Methoden:
Java:
/** Erzeugt einen Baum mit einem einzigen Knoten */
public BinTree(int v) {
root = new Node(null, v, null);
}
/**
* Konstruiert einen Baum, aus zwei gegebenen Teilbäumen und einer neuen
* Wurzel mit Wert v.
*/
public BinTree(BinTree left, int v, BinTree right) {
root = new Node(left.root, v, right.root);
Ich hab zB. sowas geschrieben, allerdings weiss ich nicht genau wie ich weitermachen muss:
Java:
public static BinTree treeOfArray(int[] a) {
int i = 0;
BinTree left = new BinTree(a[i*2 + 1]);
BinTree right = new BinTree(a[i*2 + 2]);
BinTree blub = new BinTree(left ,a[i], right);
return blub;
}
Zuletzt bearbeitet: