使用索引将BST值存储到数组中

时间:2017-07-09 14:57:23

标签: c++ arrays binary-tree binary-search-tree

我试图创建一个使用BST将其值存储在数组中的函数。我有一个全局变量index = -1;动态创建大小为BST的数组。

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);
    }
}

适用于某些具有此类结构的树

        6
    5
4

但它并不适用于像这样的结构

    3
2       4
            5

1 个答案:

答案 0 :(得分:0)

数组赋值应位于树遍历的中间

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