2016-07-11 242 views
0

我的BST插入代碼已通過3個測試用例,並且因其他3個測試用例而失敗,因爲測試用例已隱藏我無法弄清楚我的邏輯出錯位置。請檢查並告知我其他不同的測試用例,我的邏輯不會通過。 這裏的代碼:BST插入問題

/* 
Node is defined as 

typedef struct node 
{ 
    int data; 
    node * left; 
    node * right; 
}node; 

*/ 


node * insert(node * root, int value) 
{ node* n; 
n=root; 
if(n!=NULL) 
{while (true) 
    { if(n->data > value && n->left!=NULL){n=n->left;} 
     else if(n->data < value && n->right!=NULL){n=root->right;} 
     else 
      { node* a=new node(); 
      a->data=value; 
      if(n->data > value){ n->left=a;break; } 
      else{ n->right=a;break; } 
      } 
    } 
} 
else 
{node* a=new node(); 
    a->data=value; 
    root=a; 
} 
return root; 

} 

回答

0

我寫它像

node* insert(node * root, int value) 
    { node* n= root; 
     node* a=new node(); 
     if(a == NULL) 
    { cout<<" no memory \n " ; exit(0); } 
     a->data=value; 
     a->left=a->right=NULL; 
    if(n!=NULL) 
    {while (true) 
     { if(n->data > value ) 
      { if(n->left!=NULL) 
           {n=n->left;} 
       else 
        { 
          n->left=a; 
          return root; 
         }      
       } 
      else if(n->data < value ) 
       { if ( n->right!=NULL) 
          {n=n->right;} 
       else 
         { 
         n->right = a; 
         return root; 
         } 
       } 

     } 
    } 
    else 
    { 
    return a; 
    } 
    } 
+0

阿什拉夫:該函數聲明隱含問題制定者宣佈,我不能修改它。 –

+0

好的,我再次重寫了這個函數For you Ashish我已經準備好了數據結構 –

+0

謝謝Ashraf,但我沒有在尋找解決方案,而是我的疑問是我的代碼沒有成功產生正確的結果,如果你能用這件事幫助我,我會非常感激你!提前致謝! –