Witam!
Mam problem z tablicową implementacją drzewa wyszukiwawczego(2i - lewy potomek i, 2i+1 prawy potomek i, i/2 - rodzic i). Operacje jakie mają na nim być wykonywane to dodawanie elementu oraz wyszukiwanie minimum i maksimum w drzewie. Jest natomiast warunek, że rozmiar jakiejkolwiek nie może przekroczyć 4096 bajtów. Wydaję mi się, że należy zrobić tablicę wskaźników na tablice wskaźników, i każdy z tych wskaźników wskazuje dopiero na dane. Wyskosc drzewa ma byc mniejsza niz 31. Mógłby ktoś spróbować pomóc mi z tymi funkcjami? Oto mój dotychczasowy kod, lecz coś jest nie tak z dodawaniem elementu:
int dodaj(int *drzewo,int liczba,int ilosc)
{
if(drzewo[1] == -1)
{
drzewo[1]=liczba;
return 0;
}
else
{
if(drzewo[ilosc] > liczba && drzewo[2*ilosc] == -1)
drzewo[2*ilosc]= liczba;
else if(drzewo[ilosc] < liczba && drzewo [2* ilosc +1] == -1)
drzewo[2*ilosc +1] = liczba;
else
dodaj(drzewo,liczba,++ilosc);
}
}
Wyszukiwanie max i min:
int maksimum(int *drzewo,int liczba,int ilosc)
{
int i=1,max;
while(drzewo[2*i+1] != -1)
{
max=drzewo[2*i+1];
i++;
}
return max;
}
int minimum(int *drzewo,int liczba,int ilosc)
{
int i=1,min;
while(drzewo[2*i] != -1)
{
min=drzewo[2*i];
i++;
}
return min;
}
Nizainicjonowane węzły mają wartość -1. Z góry dzięki za pomoc.