在此處使用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