0

这是c中没有给我解决方案的函数

 struct node* serch(struct node *ptr,int x)

 {

   if(ptr->data==x)
   {     
     printf(" root of tree itself ");
   }
   else
   {     
     struct node *ptr1,*ptr2;
     ptr1=ptr->left;
     ptr2=ptr->right;

     while((ptr1->data!=x)&&(ptr2->data!=x))
     {
         if(ptr->data>x)
         {
             ptr=ptr1;
             ptr1=ptr->left;
             ptr2=ptr->right;
         }

         else if(ptr->data<x)
         {
             ptr=ptr2;
             ptr1=ptr->left;
             ptr2=ptr->right;
         }
     }
     return ptr;
   }
 }

该代码对于具有两个子节点的节点工作正常(特别是在树平衡的级别上工作正常)但之后它不起作用并给出错误

parentnode.exe 已停止工作,Windows 正在检查解决方案。

4

1 回答 1

0

你有几个错误

  1. 您没有为案件退回任何东西ptr->data==x。您的 c 编译器应该发出警告,指出并非所有路径都返回值。

  2. 你没有检查空值

于 2013-10-07T19:22:17.697 回答