2016-10-16 4 views
0

私は私のコードがある (https://www.hackerrank.com/challenges/binary-search-tree-insertion)バイナリツリーのための挿入操作に質問リンクエラーが発生している取得しています:バイナリツリーエラーでの挿入操作?

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

次のように私はhackerrankから取得していますエラーは次のとおりです。

間違った答え! 考えられるエラー:

  1. この関数からNULL値が返されました。
  2. あなたは手始めに機能
+0

'しばらく(X == 0)'無限ループ –

+0

私はwhileループから抜け出すためにbreak文を使用していますエラー – asimes

+0

@User_Targaryenは何ですか。 –

答えて

1

からいくつかの値を印刷しているあなたのロジック

  • に問題があり、あなたはそれぞれの挿入時に新しいノードを割り当てる必要があります。

    このようなあなたの宣言を開始し

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

    ありがとうございますが、この場合には1つの番号しか挿入されていません –

    +0

    それは問題ではありません。ツリーの各ノードには、子ノードへのポインタが含まれています。そのメモリがどこに割り当てられると思いますか? – selbie

    +0

    ありがとうございました@selbieそれは働いた。 –

    関連する問題