Implementacja drzewa

0

Mam kod zaimplementowanego drzewa w Pacalu i przepisuję go na c++. Przepisałem ale nie działa, tzn nie wyrzuca błędów po prostu nić nie wyświetla a powinien przejrzeć drzewo inorder preorder i postorder oto kod:

 #include <iostream>

using namespace std;

struct drzewo{
   int klucz;
   drzewo *lewy,*prawy;
};

drzewo *x=NULL;

void Insert(drzewo *x, int klucz){
   if(x==NULL){
         x=new drzewo;
         x->klucz=klucz;
         x->lewy=NULL;
         x->prawy=NULL;
   }
   else{
      if(klucz>=x->klucz) Insert(x->prawy, klucz);
      if(klucz<x->klucz) Insert(x->lewy, klucz);
   }
}

void inorder(drzewo *x){
   if(x!=NULL){
         inorder(x->lewy);
         cout<<x->klucz<<" ";
         inorder(x->prawy);
   }
}

void preorder(drzewo *x){
   if(x!=NULL){
         cout<<x->klucz<<" ";
         preorder(x->lewy);
         preorder(x->prawy);
   }
}

void postorder(drzewo *x){
   if (x!=NULL){
         postorder(x->lewy);
         postorder(x->prawy);
         cout<<x->klucz<<" ";
   }
}


int main()
{
    int a;
    cin>>a;
    while(a!=5){
       Insert(x,a);
       cin>>a;
    }
    inorder(x);
    preorder(x);
    postorder(x);
    return 0;
}

Nie mam pojęcia gdzie jest błąd ten sam kod w pascalu działa. Co jest nie tak?

1

Błąd w insert, bo globalna zmienna x jak była NULL'em tak NULL'em pozostaje.

0

Zmieniłem tylko ten fragment kodu:

void Insert(drzewo *x, int klucz){

na:

void Insert(drzewo *&x, int klucz){

Czyli dodałem tylko "&", ale zrobiłem to bo podejrzałem gdzieś w internecie ale nie rozumiem dlaczego teraz działa co ten & robi?

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