#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); }