我不知道这段代码出了什么问题。当我运行它时,我收到此错误消息“错误:无法从'TreeNode'转换为'TreeNode *'std :: cout << s.preorderTraversal(t)<< std :: endl;“
#include<iostream>
#include<stack>
#include<vector>
struct TreeNode{
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x): val(x), left(NULL), right(NULL){}
};
class Solution {
public:
std::vector<int> preorderTraversal(TreeNode* root)
{
std::vector<int> res;
std::stack<TreeNode*> s;
s.push(root);
while(!s.empty())
{
TreeNode* top = s.top();
s.pop();
if(!top)
res.__emplace_back(top->val);
s.push(top->right);
s.push(top->left);
}
return res;
}
};
int main()
{
Solution s;
TreeNode t(1);
std::cout << s.preorderTraversal(t) << std::endl;
}
[t
不是* TreeNode
期望的preorderTraversal(TreeNode* root)
都声明为指针
TreeNode * t = new TreeNode(1);
std::cout << s.preorderTraversal(t) << std::endl;
都将其作为指向preorderTraversal
的指针
TreeNode t(1);
std::cout << s.preorderTraversal(&t) << std::endl;
更改preorderTraversal
定义以接受非指针变量
std::vector<int> preorderTraversal(TreeNode& root)
欢迎使用StackOverflow:-)