2017-07-09 2 views
0

Ich versuche, eine Funktion zu erstellen, die eine BST verwendet, um ihre Werte in einem Array zu speichern. Ich habe einen globalen Variablenindex = -1; dynamisch erstelltes Array mit der Größe von BST.Speichern von BST-Werten in einem Array mit dem Index

int index = -1; 
struct treeNode{ 
    int value; 
    treeNode *left; 
    treeNode *right; 
} 

void treeTraversal(treeNode *node, int array[], int index){ 
    index++; 
    if (node != nullptr){ 
     array[index] = node->value; 
     treeTraversal(node->left, array, index); 
     treeTraversal(node->right, array, index); 
    } 
} 

Es funktioniert für einige Bäume mit Strukturen wie diese

 6 
    5 
4 

Aber es ist nicht für eine Struktur arbeitet wie diese

3 
2  4 
      5 
+0

Wie haben Sie die Werte in der Baumstruktur gespeichert? – user0042

+0

Ich habe es nicht eine Aufgabe und den int Hauptteil des Codes, den ich nicht erstellt habe – Zarari

+0

Ich würde empfehlen, durch Ihren Code mit einem Debugger zu gehen und zu beobachten, wie der 'Index' Parameter ändert. Überprüfen Sie, ob das Ihren Erwartungen entspricht. – user0042

Antwort

0

Die Array-Zuordnung sollte in der Mitte des Baumdurchlauf sein

int index = 0; 
struct treeNode{ 
int value; 
treeNode *left; 
treeNode *right; 
} 

void treeTraversal(treeNode *node, int array[], int *index){ 
if (node != nullptr){ 

    treeTraversal(node->left, array, &index); 
    array[index++] = node->value; 
    treeTraversal(node->right, array, &index); 
    } 
} 

Tree Sort Tutorial

+0

Ich habe es auch versucht, es funktioniert für einige Testfälle, aber funktioniert nicht für den zweiten Fall über – Zarari

+0

Es speichert nicht das letzte Element in der zweiten Baumstruktur über – Zarari

+0

Sie müssen Zeiger auf den Index übergeben. Ihre Deklaration sollte void sein. TreeTraversal (treeNode * Knoten, int Array [], int *) –

Verwandte Themen