Forum grupy T2 I Roku EiT


#1 2008-05-19 12:40:14

arturfocus

UÂżytkownik

Zarejestrowany: 2007-10-19
Posty: 56
Punktów :   

rekurencyjne obliczanie wysokości drzewa

Czy ktoś by mógł wrzucić samą funkcję z komentarzami, która obliczała to gó**o??

Z góry dziękować.


Pimpin' ride ever!
http://img112.imageshack.us/img112/682/asdasdhz7.jpghttp://img.userbars.pl/80/15955.jpg
http://img.userbars.pl/92/18342.pnghttp://img.userbars.pl/90/17940.png

Offline

 

#2 2008-05-19 18:09:30

Mateusz Buczkowski

UÂżytkownik

1965860
Zarejestrowany: 2007-10-04
Posty: 23
Punktów :   

Re: rekurencyjne obliczanie wysokości drzewa

mniej więcej tak to będzie... poprawcie mnie jeśli się mylę

Kod:

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 18:10:02)

Offline

 

#3 2008-05-19 19:05:47

marcin_gebala

UÂżytkownik

1881669
Zarejestrowany: 2007-10-11
Posty: 11
Punktów :   

Re: rekurencyjne obliczanie wysokości drzewa

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


http://danimarc.superhost.pl/mg/bars/pscs3.png  http://danimarc.superhost.pl/mg/bars/24078.gif
http://danimarc.superhost.pl/mg/bars/12186.png  http://danimarc.superhost.pl/mg/bars/png.gif

Offline

 

Stopka forum

RSS
Powered by PunBB 1.2.23
© Copyright 2002–2008 PunBB
Polityka cookies - Wersja Lo-Fi


Darmowe Forum | Ciekawe Fora | Darmowe Fora
GotLink.plklej do luster