Witam, mam problem z dodawaniem iteracyjnym do drzewa BST, kod kompiluje się jednak nie wyswietla zadnych elementow (wyglada na to że drzewo jest puste). Gdzie może leżec błąd?
#include <stdio.h>
struct elDrzewaB
{
int klucz ;
struct elDrzewaB *lewy;
struct elDrzewaB *prawy;
int licznik;
};
typedef struct elDrzewaB wDrzewaB;
typedef wDrzewaB* drzewo;
void Wyswietl(drzewo d)
{
if(d)
{
if(d->lewy)
Wyswietl(d->lewy);
printf("%d ", d->klucz);
if(d->prawy)
Wyswietl(d->prawy);
}
}
void DodajDo(drzewo *d, int klucz)
{
drzewo elem;
elem=(drzewo*)malloc(sizeof(wDrzewaB));
drzewo p=*d;
drzewo tmp=0;
elem->klucz=klucz;
elem->lewy=elem->prawy=0;
elem->licznik=1;
if(!p)
{
p=elem;
}
else
{
while(p!=0)
{
if(p->klucz>klucz)
{
tmp=p;
p=p->lewy;
}
else if(p->klucz<klucz)
{
tmp=p;
p=p->prawy;
}
else
p->licznik++;
}
if(p==0)
{
if(p->klucz>klucz)
p->lewy=elem;
else
p->prawy=elem;
}
}
}
int main(){
drzewo _d = 0;
DodajDo(&_d, 44);
DodajDo(&_d, 43);
DodajDo(&_d, 42);
DodajDo(&_d, 46);
Wyswietl(_d);
}