UÂżytkownik
Czy ktoś by mógł wrzucić samą funkcję z komentarzami, która obliczała to gó**o??
Z góry dziękować.
Offline
UÂżytkownik
mniej więcej tak to będzie... poprawcie mnie jeśli się mylę
int tree :: height(node *temp = NULL) { if (temp == NULL) // Jeśli wywołaliśmy funkcję bez parametru to przypisujemy pod temp wskaźnik na pierwszy element. temp = head; if (temp == NULL) // Jeśli ten wskaźnik temp nadal jest pusty, to znaczy, że nie ma drzewa... zwracamy 0. return 0; int left = 0; int right = 0; // dwie zmienne które będą pamiętać wysokość prawego poddrzewa i lewego. // wskaźniki na lewy i prawy element nazwane będą wsk_left i wsk_right ;) if (wsk_left) left = height(wsk_left); // uruchamiamy tę samą funkcję dla lewego poddrzewa i zapisujemy jego wysokość w zmiennej left; if (wsk_right) right = height(wsk_right); // to samo dla prawej części if (left > right) return left + 1; return right + 1; // a wysokość drzewa to wysokość wyższego poddrzewa + 1. a to jeden to ten węzeł z którego została wywołana funkcja. }
EDIT: nie zamknąłem klamry ^^
Ostatnio edytowany przez Mateusz Buczkowski (2008-05-19 16:10:02)
Offline
UÂżytkownik
Tylko ze funkcja miała nie być elementem klasy drzewa. Ja zrobiłem podobnie, w liście arg funkcji dodałem jedynie (Tree * myTree, node * temp = NULL), wtedy można wywołać funkcję (np w main) podając jako arg tylko wskaźnik na obiekt drzewa. Wraz ze zmianą listy arg funkcji oczywiście trzeba zmienić jej wywołania rekurencyjne
Offline