C++ 在push_-back中调用递归函数
我正在编写一个函数,使用二进制搜索树中的值按升序填充向量。我还试图将此函数的运行时间保持为O(n)。我想我需要调用一个递归函数,该函数遍历bst并以升序获取数字。我对如何使用递归函数的结果感到困惑。像这样在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 *
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帮助很大!