Witam wszystkich, piszę sobie program wykożystujący drzewo, i mam problem z funkcją tworzącą to drzewo, lub też tylko z funkcją dodającą węzły. Sam nie wiem, ale było by mi bardzo miło, gdyby ktoś powiedział lub chociaż mnie naprowadził gdzie tkwi problem:
struct Skr {Swi* pocz; Swi* kon; int wag; int nr_d;}; //krawedz
struct Sga {Skr* kr; Sga* p; Sga* l;}; //wezel
void tw_dr(ifstream &iplik, Swi* wi_tab, Sga* &korzen) //funkcja tworząca drzewo
{
Sga* nowy= new Sga;
while (!iplik.eof())
{nowy->kr= zplk(iplik, wi_tab);
nowy->l=NULL;
nowy->p=NULL;
test(korzen, nowy);
cout<<"dodano do drzewa"<<endl;
}
return;
}
void dod_do_drz2(Sga* &korzen, Sga* nowy) //funkcja dodająca węzeł do drzewa
{
Sga* tmp= korzen;
while(true)
{
if (tmp->kr->wag>=nowy->kr->wag)
{if (tmp->p==NULL)
{tmp->p=nowy; break;}
else
tmp=tmp->p;
}
else
{
if (tmp->l==NULL)
{tmp->l=nowy; break;}
else tmp=tmp->l;
}
}
}
drzewo ma być uporządkowane ze względu na wartość wag no wiec... czemu to nie działa?
kiedy chce wyświetlić drzewo, funkcją
void WyswietlDrzewo (Sga* wezel)
{if (wezel != NULL)
{
WyswietlDrzewo (wezel->l);
cout<< wezel->kr->pocz->nr<< '\t'<<wezel->kr->kon->nr <<'\t'<< wezel->kr->wag<<endl;
WyswietlDrzewo (wezel->p);
}
return;
}
wyświetla mi jedynie 3 liczby które nie mogą być poprawne, bo nie ma takiej kombinacji w pliku z którego pobieram wartości, aż program sie wykrzacza.