在此处使用C++。我正在尝试开发一个特定的程序,从它的前序遍历中创建一个BST。以下是第一批代码:错误:从'Node *'无效转换为'int'
class Node {
private:
int val;
Node *left;
Node *right;
public:
Node() : val(0), left(NULL), right(NULL) {}
Node (int v) : val(v), left(NULL), right(NULL) {}
Node (int v, Node *l, Node *r) : val(v), left(l), right(r) {}
Node& operator = (Node& rhs) {
if (&rhs == this) return *this;
val = rhs.val;
left = rhs.left;
right = rhs.right;
return *this;
}
}*root;
我已经拿出了一些功能,但这是基础知识。现在,这里的另一条代码:
Node *temp = new Node();
if (preorder[trav] <= N)
{
temp = root;
root->goLeft(pre_ordered, traverse);
traverse++;
}
else
{
temp = root;
root->goRight(pre_order, traverse);
traverse++;
}
然而,然后我得到“错误:从‘节点*’到‘廉政’无效转换”上线“TEMP =根”。有任何想法吗?在我看来,我设置了一个节点等于另一个节点,所以我不明白什么是错的。在网上看,发现没有什么帮助。一些类似的错误,但只是不同而已,不够有用。
我会前期,这是一所学校的作业,所以我不是在寻找直接的答案。只是提示我需要改变的地方,或者我需要看的地方会很棒!谢谢。
编辑:精确的错误是:
main.cpp:160:15: error: invalid conversion from ‘Node*’ to ‘int’ [-fpermissive]
temp = root;
^
编辑我发现了它。我道歉。
我是愚蠢的,并没有看够硬地发现,我是重新定义“温度”作为主要功能的int值。对不起,浪费你的时间。
不能回答,因为没有足够的代表我自己的问题。
给我们更多关于你的第二位代码的内容 - 至少是封闭函数。 – Elemental
[Works for me](http://ideone.com/RNh8JD),一旦我修正了错误的成员名称。你能发布一个演示错误的测试用例吗? –
你的代码没有声明'left'和'right'。它是'left_child'和'right_child'吗?另外,为什么要创建一个新的'Node',然后通过分配'root'来丢失它? – crashmstr