2016-01-26 8 views
0
node * search(node *root,int k) { 
    if(root == NULL) 
     return NULL; 
    if(root->data == k) 
     return root; 
    else { 
     search(root->left,k); 
     search(root->right,k); 
    } 
    return NULL; 
} 

Я не знаю, почему эта функция не работает? Пожалуйста помоги.как искать узел в двоичном дереве?

+0

определяют «не работает» – KevinDTimm

+0

Хотя его несколько очевидно, я рекомендовал бы добавить тег языка для этого (может получить лучшие ответы). – Sh4d0wsPlyr

ответ

1

Вы не возвращаете результат рекурсивных вызовов, если узел найден.

node * search(node *root,int k) { 
    if(root == NULL) { 
     return NULL; 
    } else if (root->data == k) { 
     return root; 
    } else { 
     node* x = search(root->left,k); 
     if (x) 
     return x;   //if we find in left subtree, return result 
     return search(root->right,k); 
    } 
} 
Смежные вопросы