BST* member2(BST *start, int wartosc) {
// jesli element jest szukana wartoscia to odnalezlismy ja
if (start->element == wartosc)
return start;
// jesli szukana wartosc jest mniejsza to idziemy do lewego poddrzewa - o ile istnieje
else if (wartosc < start->element && start->lewy != NULL)
return member2(start->lewy, wartosc);
// jesli szukana wartosc jest wieksza to idziemy do prawego poddrzewa - o ile istnieje
else if (wartosc > start->element && start->prawy != NULL)
return member2(start->prawy, wartosc);
return NULL;
}
Teraz wyświetla 4 liczby z 6 i wyrzuca błąd. W czym błąd?
Używanie drzewa BST do sortowania (kiedy celem nadrzędnym jest sortowanie) to ekhm… najdziwniejsza rzecz jaką widziałem. Jesteś pewny że nie chodziło o bin-heap? W każdym razie jeśli wypiszesz węzły w kolejności in-order, otrzymasz ciąg posortowany rosnąco (oczywiście odczytanie go od końca da ciąg malejący, ale to już oczywiste)
Wypisywanie in-order rekurencyjnie można zapisać jako:
Dla węzła jeśli ma lewe dziecko to wywołaj dla lewego dziecka