Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void usunwezel(wezel *korzen, wezel* usuwany)
- {
- wezel* pomocniczy, *ojciec, *synpom, *pomocniczy2;
- if(usuwany->zwroclewy()!=NULL&&usuwany->zwrocprawy()!=NULL)
- {
- pomocniczy=znajdzzastepczy(usuwany);
- ojciec=pomocniczy->zwrocgora();
- if(ojciec->zwroclewy()==pomocniczy)
- {
- if(pomocniczy->zwrocprawy()!=NULL)
- ojciec->ustawlewy(pomocniczy->zwrocprawy());
- else
- ojciec->ustawlewy(NULL);
- }
- else
- {
- if(pomocniczy->zwroclewy()!=NULL)
- ojciec->ustawprawy(pomocniczy->zwroclewy());
- else
- ojciec->ustawprawy(NULL);
- }
- if(usuwany->zwroc_wysokosc()==-1)
- pomocniczy->ustaw_wysokosc(0);
- if(usuwany->zwroc_wysokosc()==-1)
- pomocniczy->ustaw_wysokosc(0);
- if(usuwany->zwroc_wysokosc()==0)
- pomocniczy->ustaw_wysokosc(1);
- }
- else
- {
- if(usuwany->zwroclewy()!=NULL)
- {
- pomocniczy=usuwany->zwroclewy();
- usuwany->ustawlewy(NULL);
- }
- else
- {
- pomocniczy=usuwany->zwrocprawy();
- usuwany->ustawprawy(NULL);
- }
- usuwany->ustaw_wysokosc(0);
- }
- if(pomocniczy!=NULL)
- {
- pomocniczy->ustawgora(usuwany->zwrocgora());
- pomocniczy->ustawlewy(usuwany->zwroclewy());
- if(pomocniczy->zwroclewy()!=NULL)
- pomocniczy->zwroclewy()->ustawgora(pomocniczy);
- pomocniczy->ustawprawy(usuwany->zwrocprawy());
- if(pomocniczy->zwrocprawy()!=NULL)
- pomocniczy->zwrocprawy()->ustawgora(pomocniczy);
- pomocniczy->ustaw_wysokosc(usuwany->zwroc_wysokosc());
- }
- if(usuwany->zwrocgora()!=NULL)
- {
- if(usuwany->zwrocgora()->zwroclewy()==usuwany)
- usuwany->zwrocgora()->ustawlewy(pomocniczy);
- else
- usuwany->zwrocgora()->ustawprawy(pomocniczy);
- synpom=pomocniczy;
- pomocniczy=usuwany->zwrocgora();
- }
- else
- {
- korzen=pomocniczy;
- }
- while(pomocniczy!=NULL)
- {
- if(pomocniczy->zwroc_wysokosc()==0)
- {
- if (pomocniczy->zwroclewy()==synpom)
- pomocniczy->ustaw_wysokosc(-1);
- else
- pomocniczy->ustaw_wysokosc(1);
- break;
- }
- else
- {
- if(((pomocniczy->zwroc_wysokosc()==1)&&(pomocniczy->zwroclewy()==synpom))||((pomocniczy->zwroc_wysokosc()==-1)&&(pomocniczy->zwrocprawy()==synpom)))
- {
- pomocniczy->ustaw_wysokosc(0);
- synpom=pomocniczy;
- pomocniczy=usuwany->zwrocgora();
- }
- else
- {
- if(pomocniczy->zwroclewy()==synpom)
- pomocniczy2=pomocniczy->zwrocprawy();
- else
- pomocniczy2=pomocniczy->zwroclewy();
- if(pomocniczy2->zwroc_wysokosc()!=0)
- {
- if(pomocniczy->zwroc_wysokosc()==1)
- rotacjaLL(korzen,pomocniczy);
- else
- rotacjaRR(korzen,pomocniczy);
- }
- else
- {
- if(pomocniczy->zwroc_wysokosc()==pomocniczy2->zwroc_wysokosc())
- {
- if(pomocniczy->zwroc_wysokosc()==1)
- rotacjaLL(korzen,pomocniczy);
- else
- rotacjaRR(korzen,pomocniczy);
- synpom=pomocniczy2;
- pomocniczy=pomocniczy2->zwrocgora();
- }
- else
- {
- if(pomocniczy->zwroc_wysokosc()==1)
- rotacjaLR(korzen,pomocniczy);
- else
- rotacjaRL(korzen,pomocniczy);
- synpom=pomocniczy->zwrocgora();
- pomocniczy=synpom->zwrocgora();
- }
- }
- }
- }
- }
- }
- int main()
- {
- wezel *korzen=new wezel;
- dodajwezel(korzen,7);
- dodajwezel(korzen,8);
- dodajwezel(korzen,0);
- // dodajwezel(korzen,4);
- // dodajwezel(korzen,9);
- // dodajwezel(korzen,10);
- // dodajwezel(korzen,14);
- cout << "wartosc korzenia: "<< korzen->zwroc_wartosc() << endl;
- cout<< "wartosc prawego syna: "<<korzen->zwrocprawy()->zwroc_wartosc()<<endl;
- cout << "wartosc lewego syna: "<<korzen->zwroclewy()->zwroc_wartosc()<<endl;
- // cout << "wartosc lewego prawego: "<<korzen->zwroclewy()->zwrocprawy()->zwroc_wartosc()<<endl;
- usunwezel(korzen,korzen);
- cout<<"korzen: "<<korzen->zwroc_wartosc()<<endl;
- cout<<korzen->zwroc_wysokosc();
- // cout << "wartosc lewego prawego: "<<korzen->zwroclewy()->zwrocprawy()->zwroc_wartosc()<<endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement