2013-10-07 42 views
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正在检查解决方案。

+0

@马克Lakata,甚至固定第一错误后,我没有通过获取和如果你给的代码片段来解决这将是非常慷慨的你第二个错误,因为我无法自己修复它。 – user2855913

+0

问问你自己,如果一个节点没有左脚会发生什么?还是右脚?或两者都不?对不起,我再也忍不住了。问你的老师。 –

回答

0

你有几个错误

  1. 你是不是对的情况下ptr->data==x返回的东西。你的c编译器应该给出一个警告,说明并不是所有的路径都返回一个值。

  2. 你不检查空