2016-05-18 110 views
0

我想知道這個錯誤爲什麼它被佔領了!來自C++的BST代碼

class node 
{ 
public: 
    int data ; 
    node *left ; 
    node *right ; 
} ; 

class tree 
{ 
public: 
    node * root ; 

public: 
    tree() 
    { 
     root = NULL ; 
    } 
    node* Insert(node* root, int num) // 
    { 
     if(root == NULL) // root is null 
     { 
      node * temp = new node() ; 
      temp->left = NULL ; 
      temp->right = NULL ; 
      temp->data = num ; 
      root = temp ; 
     } 
     else if (num < root->data) 
     { 
      root->left = Insert(root->left, num) ; 
     } 
     else if (num > root->data) 
     { 
      root->right = Insert(root->right, num) ; 
     } 
     return root ; 
    } 
} ; 
void main() 
{ 
    tree * Tree = new tree() ; 
    Tree->Insert(Tree->root, 10) ; 
    cout << temp->root->data ; 
} 

當我執行這個代碼,比我預期的根的數據是10 但實際上,根是空的。 爲什麼root null?

我不知道!!!!

請教我!!!

回答

1

root永遠不會在您的Insert方法中更新。傳遞給方法root與成員變量不同。

不喜歡以下內容:

或通過根的地址,或使用this->root =無處不在方法內部。

整體設計需要重新審查,我想你想娛樂和學習

另外,還要確保你釋放內存一旦你完成。目前你在任何地方都有內存泄漏。