Witam, mam do napisania funkcję wstawiania do drzewa BST, napisałem dwie różne na podstawie książki i materiałów dostępnych w internecie i coś mi nie działa. Nie wiem czy to wina tego, że nie pisze tego na klasach, bo we wszystkich źródłach jest to tak rozpisane, ale niestety moje umiejętności są zbyt niskie, żeby coś takiego zbudować. Proszę o pomoc w znalezieniu błędu
pierwszy program
#include <iostream>
using namespace std;
struct wezelek
{
wezelek *lewy,*prawy;
int key;
};
wezelek* wstaw(wezelek* wezel, int liczba)
{
if (wezel->key==0)
{
wezel->key=liczba;
wezel->lewy=NULL;
wezel->prawy=NULL;
}
else if (liczba<wezel->key)
wstaw(wezel->lewy,liczba);
else wstaw(wezel->prawy,liczba);
return wezel;
}
int main()
{
wezelek *wezel=new wezelek;
wezel->key=0;
wstaw(wezel,10);
wstaw(wezel,20);
wstaw(wezel,3);
wstaw(wezel,15);
wstaw(wezel,7);
return 0;
}
drugi
#include <iostream>
using namespace std;
struct wezelek
{
wezelek *lewy,*prawy,*rodzic;
int key;
};
wezelek* wstaw(wezelek* root, wezelek* z)
{
wezelek *y,*x=new wezelek;
y=NULL;
x=root;
while(x)
y=x;
if(z->key<x->key)
x=x->lewy;
else x=x->prawy;
z->rodzic=y;
if (y==NULL)
root=z;
else if (z->key<y->key)
y->lewy=z;
else y->prawy=z;
return y;
}
int main()
{
wezelek *root;
int tab[5]={3,4,5,2,7};
for (int i=0;i<5;i++)
{
wezelek *z=new wezelek;
z->key=tab[i];
z->lewy=NULL;
z->prawy=NULL;
z->rodzic=NULL;
wstaw(root,z);
}
return 0;
}