Drzewa BST [C++]

0

Witam ! mam problem z funkcją dodającą liczby do drzewa BST, napisałem to na podstawie pseudokodu z książki ale coś nie działa tak jak powinoo :(

struct vertex
{
   vertex *lewy,*prawy;
   int val;
}root; 
void dodaj(int war)
{
      vertex *x=&root,*nowy=new vertex,*y;
      nowy->val=war;
      while(x!=NULL)
      {
         y=x;
         if( war < (x->val) )
            x=x->lewy;
         else
            x=x->prawy;
      }
      if(y==NULL)
      {
         printf ("\nDodajemy do roota %d",war);
         root.val=nowy->val;
      }   
      else
          if(nowy->val < y->val)
          {
             y->lewy=nowy;
             printf ("\nDodajemy na lewo ");
          }   
          else
          {
             y->prawy=nowy; 
             printf ("\nDodajemy na prawo");
          }      
}     

z góry dziękuje za pomoc ;-)

0
struct vertex
{
   vertex *lewy,*prawy;
   int val;
}; 

vertex*	root=NULL;

vertex* dodaj(vertex *root,int war)
{
	vertex *x,*nowy,*y=NULL;

	nowy=new vertex;
	nowy->val=war;
	nowy->lewy=NULL;
	nowy->prawy=NULL;
	
	if(!root)return nowy;
	
	x=root;
	
	while(x!=NULL)
	{
		y=x;
		if( war < (x->val) )x=x->lewy;
		else x=x->prawy;
	}
	
	if(nowy->val < y->val)
	{
		y->lewy=nowy;
		printf ("\nDodajemy na lewo ");
	}   
	else
	{
		y->prawy=nowy; 
		printf ("\nDodajemy na prawo");
	}      
	
	return root;
}     

1 użytkowników online, w tym zalogowanych: 0, gości: 1