MeHow Opublikowano 7 Kwietnia 2005 Zgłoś Opublikowano 7 Kwietnia 2005 Otoz, tworze program, nie ukrywam na zaliczenie na studia i mam juz go prawie calego, jednakze mily Pan zazyczyl sobie, zeby drzewo bylo wywazone. Domyslam sie, ze znacznie efektywniej, a moze i prosciej jest wywazac drzewo od razu przy dodawaniu elementow niz robic osobna funkcje w klasie void wywaz( void ). Nie umiem jednakze wymyslic zadnego sprytnego (ani niesprytnego :wink: ) algorytmu, ktory wykonywalby takie dzialanie. Aktualnie moja funkcja dodajaca elementy wyglada tak: //////poczatek nowy_element ////////////template< class T >bool wierzcholek< T >::nowy_element( const T &dana) { static wierzcholek< T > *aktualny; aktualny = this; while(1) { if(dana > (aktualny->dane)) { if((aktualny->prawy) == NULL) { aktualny->dodaj_prawy(); aktualny = aktualny->prawy; aktualny->wstaw( dana ); return true; } else { aktualny = aktualny->prawy; } } if(dana < (aktualny->dane)) { if((aktualny->lewy) == NULL) { aktualny->dodaj_lewy(); aktualny = aktualny->lewy; aktualny->wstaw( dana ); return true; } else { aktualny = aktualny->lewy; } } if(dana == (aktualny->dane)) { return false; } }}////koniec nowy element Jesli bylby ktos na tyle mily i pomogl mi w rozwiazaniu mojego problemu, bylbym wdzieczny. Pozdrawiam MeHow Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Johnjohn Opublikowano 7 Kwietnia 2005 Zgłoś Opublikowano 7 Kwietnia 2005 To jest najzwyklejszy sposób wstawiania elementów do drzewa binarnego, nie będę pisał jak to sie robi bo spędziłem nad tym kawał czasu juz dobre 2 lata temu heh, ale w kazdym razie na sieci pełno jest algorytmów tego typu. Poszukaj po słowach kluczowych dzrewa AVL, ewentualnie dzrewa czerwono-czarne, takze dzrewa SPLAY. to proste algorytmy wywazania drzew binarnych, nie powinienes mieć problemu. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...