无法从'TreeNode'转换为'TreeNode *'

问题描述 投票:-1回答:1

我不知道这段代码出了什么问题。当我运行它时,我收到此错误消息“错误:无法从'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;
}
c++
1个回答
0
投票

[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:-)

© www.soinside.com 2019 - 2024. All rights reserved.