通过搜索给定密钥,二叉树中的节点的父节点

时间:2013-10-07 19:14:53

标签: binary-tree binary-search-tree

这是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正在检查解决方案。

1 个答案:

答案 0 :(得分:0)

你有几个错误

  1. 你没有为案件ptr->data==x返回一些内容。你的c编译器应该发出警告,不是所有路径都返回一个值。

  2. 您没有检查空值