i can't figure out what's wrong with this code. when i run it, i got this error message "error: no viable conversion from 'TreeNode' to '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;
}