"root"未命名类型错误
'root' does not name a type error
编译以下C++代码时,
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
TreeNode* construct(vector<int> nums,int start, int end)
{
if(start>end)
return NULL;
int i,index,v = INT_MIN;
for(i=start;i<=end;i++)
if(nums[i]>v)
{
v = nums[i];
index = i;
}
}
TreeNode* root = new TreeNode(v);
root->left = construct(nums,start,index-1);
root->right = construct(nums,index+1,end);
return root;
}
public:
TreeNode* constructMaximumBinaryTree(vector<int>& nums) {
return construct(nums,0,nums.size()-1);
}
};
我收到以下错误:
Line 27: 'root' does not name a type
我收到了很多关于此错误的文章,但似乎都没有解决问题。使用 malloc(( 在这里也不起作用。
谢谢!!
编译器
不知道root
变量的类型,因为它的定义被注释掉了。您还有一个支撑问题,因为for
循环可能需要一个,因为您在if
之后有一个闭合。
应该做一些事情,如下所示。
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
class Solution {
TreeNode* construct(vector<int> nums,int start, int end)
{
if(start>end)
return NULL;
int i,index,v = INT_MIN;
for(i=start;i<=end;i++){ //here a missing brace
if(nums[i]>v)
{
v = nums[i];
index = i;
}
}
TreeNode* root = new TreeNode(v);
root->left = construct(nums,start,index-1);
root->right = construct(nums,index+1,end);
return root;
}
public:
TreeNode* constructMaximumBinaryTree(vector<int>& nums) {
return construct(nums,0,nums.size()-1);
}
};
因此,提供的示例非常不清楚,但这就是代码的格式
。注意:我目前无法访问编译器来测试这一点。
在头文件中
解决方案.h
// Definition for a binary tree node.
struct TreeNode
{
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
class Solution
{
public:
Solution();
~Solution();
TreeNode* construct(vector<int> nums,int start, int end);
TreeNode* constructMaximumBinaryTree(vector<int>& nums);
};
在 CPP 文件中
解决方案.cpp
Solution::Solution()
{
// Init any members
}
Solution::~Solution()
{
// Delete any members
}
TreeNode* Solution::construct(vector<int> nums,int start, int end)
{
if(start>end)
return NULL;
int i,index,v = INT_MIN;
for(i=start;i<=end;i++)
{
if(nums[i]>v)
{
v = nums[i];
index = i;
}
}
TreeNode* root = new TreeNode(v);
root->left = construct(nums,start,index-1);
root->right = construct(nums,index+1,end);
return root;
}
TreeNode* Solution::constructMaximumBinaryTree(vector<int>& nums)
{
return construct(nums,0,nums.size()-1);
}
相关文章:
- 我的模板类方法返回错误类型?
- 错误:类型"double()"和"double()"的操作数无效到二进制&quo
- 类型为 "int*" 的参数与 C++ 中错误类型"int**"参数不兼容
- glDrawElements GL 错误类型 = 0x824c,严重性 = 0x9146,消息 = GL_INVALID
- Eclipse/CDT_C++给出"语义错误_"类型XXX无法解决"。项目运行
- turbo 为什么我的C++代码中出现错误类型名称预期"错误?
- "auto"推断出 hashtable_policy.h 中的错误类型
- 设计自己的结果/两者之一:是否应该始终指定成功类型和错误类型
- 如何修复"ctypes"。参数错误:参数 2:<键入"异常.类型错误">:RaspberryPi 中的错误类型"错误
- 在 vscode 上编译错误.类型说明符是 C++11 扩展
- 不允许使用错误类型
- 当读取错误类型时,CIN覆盖我的初始化值
- C++:"错误:类型'const char*'和'const char [28]'的操作数无效到二进制'ope
- 我的代码错误类型警告 1 警告 C4018 和更多错误
- 在shared_from_this()中的错误类型(在继承类中)(是否有dyn.type-ware shared Poi
- 为什么缩小转换范围不能防止错误类型的map.insert()失败
- 程序总是返回二进制'>>':找不到运算符,它采用错误类型的左操作数
- 错误:类型为 '.&' 来自类型的临时 '..*康斯特'
- 涉及将要馈送的向量转换为execvp的错误类型
- C++中是否存在错误类型