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.