增加递归函数的数量

时间:2011-10-17 06:31:26

标签: c++ recursion

对于编程分配,我必须按顺序将树加载到数组中。

递归算法本身对我来说没问题。我遇到的问题是保持下标/元素数量周期性增加,以便数据进入正确的数组元素,而不是在调用返回后相互覆盖。

void foo( currentNode, data[], element? )
{
    // base case
    if ( currentNode == NULL )

    foo( currentNode->left, data, element? );
    data[ element++ ] = currentNode->data; // what do I do in between the left and right subtree calls?
    foo( currentNode->right, data, element? );
}

那么,如何增加元素以使其仅增加到数组的下一个点以进行顺序遍历?

提示很好,但我不介意解决方案。

2 个答案:

答案 0 :(得分:1)

使您的数据参数成为指针的引用:

void foo(Node* currentNode, ContentType*& data) {
  //...
  *data++ = currentNode->data;
  //..
}

答案 1 :(得分:0)

如果我理解你是正确的,你只需要一个指针

void foo( currentNode, data[], int &element )

foo( currentNode->left, data, element );
data[ element++ ] = currentNode->data;

有了这个,你可以通过每次调用foo来改变元素的值(更确切地说是元素指向的值)