Facebook
From Crippled Iguana, 1 Year ago, written in Plain Text.
This paste is a reply to Drzewo Binarne from a - go back
Embed
Viewing differences between Drzewo Binarne and Re: Drzewo Binarne
#include 

struct wezel
{
        int licznik, liczba;
        struct wezel *prawy;
        struct wezel *lewy;
};

struct wezel* wkorzen = NULL;

struct wezel *nowy_wezel(int x)
{
        struct wezel *wsk = malloc(sizeof(struct wezel));
        wsk->licznik = 1;
        wsk->liczba = x;
        wsk->lewy = NULL;
        wsk->prawy = NULL;
        return wsk;
}

void dodaj(int x)
{
        if(wkorzen == NULL)
        {
                wkorzen = nowy_wezel(x);
                return;
        }
        
        struct wezel *p1 = wkorzen;
        struct wezel *p2;
        
        while(p1 != NULL)
        {
                p2 = p1;
                        
                if(p1->liczba < x)
                {
                        p1 = p1->prawy;
                }
                else if(p1->liczba > x)
                {
                        p1 = p1->lewy;
                }
                else
                {
                        p1->licznik++;        
                        return;
                }
        }
        
        if(p2->liczba < x)
        {
                p2->prawy = nowy_wezel(x);
        }
        else
        {
                p2->lewy = nowy_wezel(x);
        }
}

void pisz(struct wezel *wsk)
{
        if(wsk == NULL) return;
        pisz(wsk->lewy);
        printf("liczba: %d licznik:%d\n", wsk->liczba, wsk->licznik);
        pisz(wsk->prawy);
}

int main(void)
{
        
        dodaj(5);dodaj(17);dodaj(2);dodaj(12);dodaj(5);dodaj(7);
        pisz(wkorzen);
}