2016-10-16 1 views
0

Ich erhalte Fehler in dem Einführungsvorgang für den binären Baum der Frage Link ist (https://www.hackerrank.com/challenges/binary-search-tree-insertion) mein Code:Operation in Binärbaumfehler einfügen?

insert(node * root, int value) 
{ 
    int x = 0; 
    node* r = root; 
    node* xx; 
    while(x==0) 
    { 
     while(value<r->data&&r->left!=NULL) 
     { 
      r=r->left; 
     } 
     if(value<r->data&&r->left == NULL) 
     { 
     xx->data = value; 
     r->left = xx; 
     break; 
     } 
     while(value>r->data && r->right!=NULL) 
     { 
      r = r->right; 
     }  
     if(value>r->data&& r->right == NULL) 
     { 
      xx->data = value; 
      r->right =xx; 
      break; 
     } 
    } 
    return root; 
} 

Der Fehler, den ich von der hackerrank bin immer wie folgt:

Falsche Antwort! Einige mögliche Fehler:

  1. Sie haben von der Funktion einen NULL-Wert zurückgegeben.
  2. Es gibt ein Problem mit Ihrer Logik ist
  3. Sie einen Wert aus dem
+0

'while (x == 0)' Endlosschleife –

+0

Was ist der Fehler – asimes

+0

@User_Targaryen I break-Anweisung verwende aus while-Schleife zu erhalten. –

Antwort

1

Für den Anfang Funktion drucken können, müssen Sie auf jedem Einfügen eines neuen Knotens zuzuweisen.

Ihre Erklärung wie folgt beginnen:

node* insert(node * root, int value) 
{ 
    node* xx = new node(); 
    xx->left = NULL; 
    xx->right = NULL; 
    xx->data = value; 
+0

Danke, aber in diesem Fall wird nur eine Nummer eingefügt –

+0

Es spielt keine Rolle. Jeder Knoten in Ihrer Struktur enthält Zeiger auf untergeordnete Knoten. Woher erwartest du, dass der Speicher zugewiesen wird? – selbie

+0

Danke @selbie es hat funktioniert. –