我不知道这段代码有什么问题。当我运行它时,我得到了以下错误消息:“TreeNode:没有可行的从'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;
}发布于 2020-01-06 16:08:57
t不是TreeNode*指针,正如preorderTraversal()所期望的那样。
要么将t声明为指针:
TreeNode * t = new TreeNode(1);
std::cout << s.preorderTraversal(t) << std::endl;
...
delete t;或者将t作为指向preorderTraversal()的指针传递
TreeNode t(1);
std::cout << s.preorderTraversal(&t) << std::endl;或更改preorderTraversal()的定义以接受非指针参数:
std::vector<int> preorderTraversal(TreeNode& root)
...
TreeNode t(1);
std::cout << s.preorderTraversal(t) << std::endl;这是为您的编译问题。下一个问题是尝试打印一个std::vector。你应该read this。
https://stackoverflow.com/questions/59615215
复制相似问题