G
Gast
Gast
Hallo,
kann mir jemand helfen? Ich komm allein mal wieder nicht drauf. Und zwar möchte ich folgendes machen:
* Anders als sonst in Java wird das Array a[] ab dem Index 1 betrachtet
* (der Wert a[0] wird ignoriert); das letzte Element wird unter
* dem als Parameter übergebenen Index "last" gefunden. Der Feldindex
* repräsentiert somit die Knotennummer des Baums.
*
* Die Methode erzeugt schrittweise einen vollständigen,
* linkslastigen Binärbaum (noch keinen Heap!);
* d.h. a[1] wird zur Wurzel, a[2] zum linken Sohn der Wurzel,
* a[3] zum rechten Sohn, a[4] zum linken Sohn des Elements mit a[2] usw.
*
* Der Schlüssel wird im Knoten unter dem Attribut key
* abgelegt, die Knotennummer (also der Index des Felds)
* wird unter dem Attribut no abgelegt.
* Zur Erzeugung eines neuen Knotens dient der
* Konstruktor public Node(int key, int no), z.B.
* Node n = new Node(a, i);
*
* Eine (nicht sehr effiziente, aber einfache) Lösungsidee
* ist folgende: die Knoten werden nacheinander
* (beginnend bei der Wurzel) eingefügt;
* für jeden neuen Knoten wird der (schon eingefügte)
* Vaterknoten anhand seiner Knotennummer gesucht.
* Dann wird der neue Knoten rechts oder links
* unter dem Vater eingefügt.
So weit bin ich gekommen. Nun weiß ich nicht, wie ich weiter komme, dass ich immer das linke und rechte Kind unter die Wurzel hänge?
Danke für eure Hilfe!!!!!
kann mir jemand helfen? Ich komm allein mal wieder nicht drauf. Und zwar möchte ich folgendes machen:
* Anders als sonst in Java wird das Array a[] ab dem Index 1 betrachtet
* (der Wert a[0] wird ignoriert); das letzte Element wird unter
* dem als Parameter übergebenen Index "last" gefunden. Der Feldindex
* repräsentiert somit die Knotennummer des Baums.
*
* Die Methode erzeugt schrittweise einen vollständigen,
* linkslastigen Binärbaum (noch keinen Heap!);
* d.h. a[1] wird zur Wurzel, a[2] zum linken Sohn der Wurzel,
* a[3] zum rechten Sohn, a[4] zum linken Sohn des Elements mit a[2] usw.
*
* Der Schlüssel wird im Knoten unter dem Attribut key
* abgelegt, die Knotennummer (also der Index des Felds)
* wird unter dem Attribut no abgelegt.
* Zur Erzeugung eines neuen Knotens dient der
* Konstruktor public Node(int key, int no), z.B.
* Node n = new Node(a, i);
*
* Eine (nicht sehr effiziente, aber einfache) Lösungsidee
* ist folgende: die Knoten werden nacheinander
* (beginnend bei der Wurzel) eingefügt;
* für jeden neuen Knoten wird der (schon eingefügte)
* Vaterknoten anhand seiner Knotennummer gesucht.
* Dann wird der neue Knoten rechts oder links
* unter dem Vater eingefügt.
So weit bin ich gekommen. Nun weiß ich nicht, wie ich weiter komme, dass ich immer das linke und rechte Kind unter die Wurzel hänge?
Code:
public void toTree(int[] a, int last){
this.root = new Node(a[1], 1);
for (int i=2;i<=last;i++){
Node n = new Node(a[i], i);
}
}
Danke für eure Hilfe!!!!!