C++ 在push_-back中调用递归函数

C++ 在push_-back中调用递归函数,c++,c++11,recursion,vector,C++,C++11,Recursion,Vector,我正在编写一个函数,使用二进制搜索树中的值按升序填充向量。我还试图将此函数的运行时间保持为O(n)。我想我需要调用一个递归函数,该函数遍历bst并以升序获取数字。我对如何使用递归函数的结果感到困惑。像这样在push-back中使用递归函数可以吗 void vector_function(){ std::vector<int> *v = new std::vector<int>(); v.pushback(recursive_function(node *

我正在编写一个函数,使用二进制搜索树中的值按升序填充向量。我还试图将此函数的运行时间保持为O(n)。我想我需要调用一个递归函数,该函数遍历bst并以升序获取数字。我对如何使用递归函数的结果感到困惑。像这样在push-back中使用递归函数可以吗

void vector_function(){
    std::vector<int> *v = new std::vector<int>(); 
    v.pushback(recursive_function(node *p));
}
void向量_函数(){
std::vector*v=新的std::vector();
v、 pushback(递归函数(node*p));
}
例如,如果二叉搜索树的值为5、3、4、7,则生成的向量将为3、4、5、7

我对如何使用递归函数的结果感到困惑。像这样在push-back中使用递归函数可以吗

void vector_function(){
    std::vector<int> *v = new std::vector<int>(); 
    v.pushback(recursive_function(node *p));
}
我可以想出两种方法

选择1 更改
recursive_函数
以同时接受对
std::vector的引用
。将其实现更新为适当地将元素推回向量。 调用时将向量传递给递归函数

void recursive_function(node* p, std::vector<int>& v)
{

    // When appropriate...
    v.push_back(p.data);
}
并将其用作

void vector_function(){
    std::vector<int> v;
    recursive_function(p, v));
}
void vector_function(){
    std::vector<int> v;
    recursive_function(p, [&v](int e) -> void { v.push_back(e); });
}
void向量_函数(){
std::向量v;
递归函数(p,[&v](int e)->void{v.push_-back(e);});
}

您可能会让一个函数在顺序遍历中返回其元素的
向量,而不是这样做。简而言之,这不会像您所希望的那样起作用,因为
push_back
需要插入一个元素。@这实际上是O(N^2),因为连接子向量的重新定位成本不会从push_back()的保证中受益。OP最好通过引用递归函数来传递目标向量。啊,好的,谢谢,我希望通过递归的返回一次传递一个元素到pushback,肯定是一个很长的过程shot@vince递归函数没有什么特别之处。这只是我们给碰巧调用它们自己的函数取的一个名字。我仍然对递归方面有点困惑。使用将目标向量传递给递归函数的方法,一旦得到所需的值,使用v.pushback(val)是否合适;递归函数(p->next);(即存储在vector中,然后进行递归调用)?谢谢!我认为选项2对我来说有点高级,但选项1帮助很大!