Ich erstelle einen binären Suchbaum mit einem 1D-Array. Mein Problem ist mit der Einfügefunktion.Array-Implementierung des binären Suchbaums
Das Einfügen von 5, 8, 3, 1, 4 und 9 ergibt den richtigen Index, wenn ich den Baum ausgabe. Wenn ich jedoch versuche, Zahlen nach 9 in den Baum einzufügen, ist der Index falsch. Zum Beispiel, mit den vorherigen Zahlen erwähnt, hat 9 einen Index von 7. Wenn ich 17, die 9 rechten Kind sein, anstelle von seinem Index bei 15, ist es Index 11.
Ich weiß, dass das Problem ist mit, wie ich i inkrementieren, aber ich bin mir nicht sicher, wie man es repariert. Jede Hilfe wird geschätzt. Vielen Dank!
void insert(int x)
{
int i = 1; //Counter
if (ptr->arr[1] == -1) //If bst is empty.
{
ptr->arr[1] = x;
}
else
{
int *temp = &ptr->arr[1]; //Temp starts at root
int *parent = NULL;
while (*temp != -1 && *temp != x)
{
if (x < *temp)
{
parent = temp;
temp = &ptr->arr[i*2];
i++;
}
else
{
parent = temp;
temp = &ptr->arr[i*2+1];
i+=2;
}
}
*temp = x;
}
Vielen Dank. Ich habe die anderen Änderungen, die Sie oben vorgenommen haben, ausprobiert und einen Laufzeitfehler bekommen. Ich denke, die Temperatur zu senken ist der richtige Weg. –
Dann ist Ihr Array möglicherweise nicht groß genug. –