带有矢量切片的矢量指针,用于从预序和顺序向量生成树
Vectors pointers with vector slices for Tree generation from preorder and inorder vectors
>我收到以下错误:
解决方案.cpp:在成员函数中构建树 第 26 行:字符 62:错误:调用"解决方案::构建树(__gnu_cxx::__alloc_traits, int>::value_type*, std::vector*)"没有匹配函数 root->left = buildTree(&preorder[index],&inorderslice); ^
在此代码中:
class Solution {
public:
TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {
if(preorder.empty() || inorder.empty())
return NULL;
if(preorder.size() == 1) // preorder and inorder should always have the same length
{
TreeNode *node = new TreeNode(preorder[0]);
return node;
}
// current root is the first entry of preorder
TreeNode *root = new TreeNode(preorder[0]);
// find the index of this number in inorder
std::vector<int>::iterator it = std::find(inorder.begin(), inorder.end(), preorder[0]);
int index = std::distance(inorder.begin(), it);
std::vector<int> inorderslice = std::vector<int>(inorder.begin(), inorder.begin() + index);
root->left = buildTree(&preorder[index],&inorderslice); // This line is a problem
root->right = buildTree(&preorder[index+1],&inorder[index+1]); // This line is a problem
return root;
}
};
我正在尝试解决一个问题,以从其预序和无序遍历向量生成树。
我正在尝试递归地执行此操作,但是在匹配执行递归的函数的变量类型时遇到了问题。
TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {
此标头正在接收指向整数向量的指针。
在我的算法中,我试图对输入向量进行切片,以便在递归中仅使用其中的一部分:
std::vector<int> inorderslice = std::vector<int>(inorder.begin(), inorder.begin() + index);
对于预序向量,我只想剪切前面的元素(索引之前的元素),所以我想我只是传递一个指向向量该元素的指针。
对于顺序向量,我想在索引之后切割元素。
以一种蟒蛇的方式,这只是 预购[索引:] inorder[:index]
但是我在调用函数时遇到错误。
如何在C++中执行此操作?
谢谢。
你的函数接受引用;你正在传递指针。
这里对&
的含义存在混淆。
它是以下任何一项:
在- 两个表达式之间应用的按位AND运算符
- 应用于一个运算符时的"地址"运算符,生成指针
- 这就是您在函数调用中所做的
- 添加到类型名称时的"引用"
- 这是您在函数参数中输入的内容
简而言之,从通话中删除&
,并查看C++书中关于使用参考文献的章节。
此标头正在接收指向整数向量的指针。
不,不是。
相关文章:
- 写入向量<向量<bool>>
- 函数向量_指针有不同的原型,我可以构建一个吗
- std::向量与传递值的动态数组
- 将值指定给向量(2D)的向量中的某个位置
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 如何使用向量的template_back函数
- 尝试通过多个向量访问变量时,向量下标超出范围
- 如何通过派生类函数更改基类中的向量
- C++从另一个类访问公共静态向量的正确方法是什么
- 如何将ampl中的集合表示为c++中的向量
- 变量没有改变?通过向量的函数调用
- 迭代时从向量和内存中删除对象
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- 如何为模板化对象创建模板向量?VS正在投掷C3203
- 计算排序向量的向量中唯一值的计数
- 矩阵向量乘法(cublasDgemv)返回零
- 带有矢量切片的矢量指针,用于从预序和顺序向量生成树
- 是由DFS算法找到的生成树总是显示在预序中
- 如何用BFS算法表示生成树的预序
- 计算给定无向图中线性生成树的个数