2013-09-14 9 views
-1

Этот код для поиска значения в двоичном дереве поиска не работает полностью.Поиск в двоичном дереве поиска

Узел struct имеет встроенные данные и struct * lc, * rc в качестве своих членов.

Здесь *r является глобальной переменной типа struct node.

struct node * searchbt(struct node*bn,int x) 

{ if(bn==NULL) 

    {printf("Element not found.\n");} 

    if(bn->data==x) {printf("Element found.\n"); r=bn; return r;} 

    if(bn->data<x) {searchbt((bn->lc),x);} 

    else {searchbt((bn->rc),x);} 
} 

Этого код для поиска компилирует, но не во время выполнения поиска любого элемента функционирования программы BST.The, как ожидается, возвращает указатель на найденный узел.

+1

Что вы хотите сказать? Что вы пробовали? – Gene

+0

пытается найти значение в заданном двоичном дереве поиска. –

+0

поэтому manu -ve голосов ........ нет ответов. –

ответ

2
struct node * searchbt(struct node*bn,int x) 

{ if(bn==NULL) 

    {printf("Element not found.\n"); return bn;} //return bn 

    if(bn->data==x) {printf("Element found.\n"); return bn;} //Just return bn 

    if(bn->data<x) {return searchbt((bn->lc),x);} // <- Add return 

    else { return searchbt((bn->rc),x);} //<- Add return 
} 
+0

возвращается неправильно? также bn - локальная переменная, которая будет уничтожена, поскольку управление переходит из блока. Я смущен здесь. Ответ на PLZ. –

+0

@RafedNole, что заставляет вас так думать? Я предлагаю вам прочитать хорошую книгу С. И проверьте [this] (http://en.wikipedia.org/wiki/Parameter_%28computer_science%29#Parameters_and_arguments). Кроме того, если я прав, у вас уже есть свой ответ. – P0W

+0

@POW спасибо за ответ. –

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