2013-10-07 4 views
0

это функция с, которая не дает мне решениеродительского узел в бинарном дереве с помощью поиска данного ключа

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 перестает работать, окна проверяют решение.

+0

@Mark Lakata, даже после фиксации первой ошибки, я не получаю через и это было бы очень щедрой из вас, если вы даете фрагмент код, чтобы исправить вторая ошибка, поскольку я не могу ее исправить самостоятельно. – user2855913

+0

Спросите себя, что произойдет, если узел не имеет левой ноги? или правой ногой? или нет? Извините, я ничего не могу поделать. Спросите своего учителя. –

ответ

0

У вас есть несколько ошибок

  1. вы не вернувшихся что-то для случая ptr->data==x. Ваш компилятор c должен был предупредить, что не все пути возвращают значение.

  2. вы не проверяли нули

Смежные вопросы