2016-05-18 17 views
0

Ich möchte diesen Fehler wissen, warum es besetzt ist !!!BST-Code von C++

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 ; 
} 

wenn ich führen Sie diesen Code, als ich das root-Daten erwarten ist 10. aber wirklich, Wurzel ist null. Warum ist Root null?

Ich weiß es nicht !!!!

bitte unterrichten Sie mich !!!

Antwort

1

root wird nie in Ihrer Insert Methode aktualisiert. Die übergebene Methode root to ist nicht dieselbe wie die Elementvariable.

Sie wie folgt vor:

oder Adresse des Wurzel oder this->root = überall innerhalb der Methode verwenden.

Insgesamt ist das Design zu revisited müssen, ich nehme an, Sie zu spielen wollen und

auch sicher, dass Sie geben den Speicher machen lernen, wenn Sie fertig sind. Derzeit haben Sie Speicherlecks überall.