2016-07-11 197 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,但我没有在寻找解决方案,而是我的疑问是我的代码没有成功产生正确的结果,如果你能用这件事帮助我,我会非常感激你!提前致谢! –