Advertisement
Guest User

Untitled

a guest
Mar 20th, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.80 KB | None | 0 0
  1. void usunwezel(wezel *korzen, wezel* usuwany)
  2. {
  3.     wezel* pomocniczy, *ojciec, *synpom, *pomocniczy2;
  4.     if(usuwany->zwroclewy()!=NULL&&usuwany->zwrocprawy()!=NULL)
  5.     {
  6.         pomocniczy=znajdzzastepczy(usuwany);
  7.         ojciec=pomocniczy->zwrocgora();
  8.         if(ojciec->zwroclewy()==pomocniczy)
  9.         {
  10.             if(pomocniczy->zwrocprawy()!=NULL)
  11.             ojciec->ustawlewy(pomocniczy->zwrocprawy());
  12.             else
  13.             ojciec->ustawlewy(NULL);
  14.         }
  15.         else
  16.         {
  17.             if(pomocniczy->zwroclewy()!=NULL)
  18.             ojciec->ustawprawy(pomocniczy->zwroclewy());
  19.             else
  20.             ojciec->ustawprawy(NULL);
  21.         }  
  22.         if(usuwany->zwroc_wysokosc()==-1)
  23.         pomocniczy->ustaw_wysokosc(0);
  24.         if(usuwany->zwroc_wysokosc()==-1)
  25.         pomocniczy->ustaw_wysokosc(0);
  26.         if(usuwany->zwroc_wysokosc()==0)
  27.         pomocniczy->ustaw_wysokosc(1);
  28.     }
  29.     else
  30.     {
  31.         if(usuwany->zwroclewy()!=NULL)
  32.         {
  33.             pomocniczy=usuwany->zwroclewy();
  34.             usuwany->ustawlewy(NULL);
  35.         }
  36.         else
  37.         {
  38.             pomocniczy=usuwany->zwrocprawy();
  39.             usuwany->ustawprawy(NULL);
  40.         }
  41.         usuwany->ustaw_wysokosc(0);
  42.     }
  43.    
  44.     if(pomocniczy!=NULL)
  45.     {
  46.         pomocniczy->ustawgora(usuwany->zwrocgora());
  47.         pomocniczy->ustawlewy(usuwany->zwroclewy());
  48.         if(pomocniczy->zwroclewy()!=NULL)
  49.         pomocniczy->zwroclewy()->ustawgora(pomocniczy);
  50.         pomocniczy->ustawprawy(usuwany->zwrocprawy());
  51.         if(pomocniczy->zwrocprawy()!=NULL)
  52.         pomocniczy->zwrocprawy()->ustawgora(pomocniczy);
  53.         pomocniczy->ustaw_wysokosc(usuwany->zwroc_wysokosc());
  54.     }
  55.     if(usuwany->zwrocgora()!=NULL)
  56.     {
  57.         if(usuwany->zwrocgora()->zwroclewy()==usuwany)
  58.         usuwany->zwrocgora()->ustawlewy(pomocniczy);
  59.         else
  60.         usuwany->zwrocgora()->ustawprawy(pomocniczy);
  61.         synpom=pomocniczy;
  62.         pomocniczy=usuwany->zwrocgora();
  63.     }
  64.     else
  65.     {
  66.         korzen=pomocniczy;
  67.     }
  68.  
  69.     while(pomocniczy!=NULL)
  70.     {
  71.         if(pomocniczy->zwroc_wysokosc()==0)
  72.         {
  73.             if (pomocniczy->zwroclewy()==synpom)
  74.             pomocniczy->ustaw_wysokosc(-1);
  75.             else
  76.             pomocniczy->ustaw_wysokosc(1);
  77.             break;
  78.         }
  79.         else
  80.         {
  81.             if(((pomocniczy->zwroc_wysokosc()==1)&&(pomocniczy->zwroclewy()==synpom))||((pomocniczy->zwroc_wysokosc()==-1)&&(pomocniczy->zwrocprawy()==synpom)))
  82.             {
  83.                 pomocniczy->ustaw_wysokosc(0);
  84.                 synpom=pomocniczy;
  85.                 pomocniczy=usuwany->zwrocgora();
  86.             }
  87.             else
  88.             {
  89.                 if(pomocniczy->zwroclewy()==synpom)
  90.                 pomocniczy2=pomocniczy->zwrocprawy();
  91.                 else
  92.                 pomocniczy2=pomocniczy->zwroclewy();
  93.                 if(pomocniczy2->zwroc_wysokosc()!=0)
  94.                 {
  95.                     if(pomocniczy->zwroc_wysokosc()==1)
  96.                     rotacjaLL(korzen,pomocniczy);
  97.                     else
  98.                     rotacjaRR(korzen,pomocniczy);
  99.                 }
  100.                 else
  101.                 {
  102.                     if(pomocniczy->zwroc_wysokosc()==pomocniczy2->zwroc_wysokosc())
  103.                     {
  104.                         if(pomocniczy->zwroc_wysokosc()==1)
  105.                         rotacjaLL(korzen,pomocniczy);
  106.                         else
  107.                         rotacjaRR(korzen,pomocniczy);
  108.                         synpom=pomocniczy2;
  109.                         pomocniczy=pomocniczy2->zwrocgora();
  110.                     }
  111.                     else
  112.                     {
  113.                         if(pomocniczy->zwroc_wysokosc()==1)
  114.                         rotacjaLR(korzen,pomocniczy);
  115.                         else
  116.                         rotacjaRL(korzen,pomocniczy);
  117.                         synpom=pomocniczy->zwrocgora();
  118.                         pomocniczy=synpom->zwrocgora();
  119.                     }
  120.                 }
  121.             }
  122.         }
  123.     }
  124. }
  125.  
  126.  
  127.  
  128.  
  129.  
  130. int main()
  131. {
  132.     wezel *korzen=new wezel;
  133.     dodajwezel(korzen,7);
  134.     dodajwezel(korzen,8);
  135.     dodajwezel(korzen,0);
  136. //  dodajwezel(korzen,4);
  137. //  dodajwezel(korzen,9);
  138. //  dodajwezel(korzen,10);
  139. //  dodajwezel(korzen,14); 
  140.     cout << "wartosc korzenia: "<< korzen->zwroc_wartosc() << endl;
  141.     cout<< "wartosc prawego syna: "<<korzen->zwrocprawy()->zwroc_wartosc()<<endl;
  142.     cout << "wartosc lewego syna: "<<korzen->zwroclewy()->zwroc_wartosc()<<endl;
  143. //  cout << "wartosc lewego prawego: "<<korzen->zwroclewy()->zwrocprawy()->zwroc_wartosc()<<endl;
  144.     usunwezel(korzen,korzen);
  145.     cout<<"korzen: "<<korzen->zwroc_wartosc()<<endl;
  146.     cout<<korzen->zwroc_wysokosc();
  147. //  cout << "wartosc lewego prawego: "<<korzen->zwroclewy()->zwrocprawy()->zwroc_wartosc()<<endl;
  148.     return 0;
  149. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement