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.