对于编程分配,我必须按顺序将树加载到数组中。
递归算法本身对我来说没问题。我遇到的问题是保持下标/元素数量周期性增加,以便数据进入正确的数组元素,而不是在调用返回后相互覆盖。
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? );
}
那么,如何增加元素以使其仅增加到数组的下一个点以进行顺序遍历?
提示很好,但我不介意解决方案。
答案 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来改变元素的值(更确切地说是元素指向的值)