Exemple #1
0
 public void Dodaj(int wartosc)
 {
     if (wartosc <= Wartosc)
     {
         if (Lewy == null)
         {
             Lewy = new Wezel(wartosc);
         }
         else
         {
             Lewy.Dodaj(wartosc);
         }
     }
     else
     {
         if (Prawy == null)
         {
             Prawy = new Wezel(wartosc);
         }
         else
         {
             Prawy.Dodaj(wartosc);
         }
     }
 }
Exemple #2
0
 public void Dodaj(int wartosc)
 {
     if (glowa == null)
     {
         glowa = new Wezel(wartosc);
     }
     else
     {
         glowa.Dodaj(wartosc);
     }
 }
Exemple #3
0
        public void ZamienZOjcem(int klucz) // O(logn), ogólnie zamiana jest O(1) ale znajdowanie rodzica jest O(logn)
        {
            if (glowa == null)
            {
                return;
            }

            Wezel Rodzic = glowa.ZnajdzRodzica(klucz);

            if (Rodzic == null)
            {
                return;
            }

            // Zależnie czy klucz jest prawym czy lewym dzieckiem mamy inne rotacje
            if (Rodzic.Lewy != null && Rodzic.Lewy.Wartosc == klucz) // Rotacja prawa
            {
                // po zamianie dziadek ma wskazywać na węzeł z kluczem
                Wezel dziadek = glowa.ZnajdzRodzica(Rodzic.Wartosc);

                Wezel Pom = Rodzic.Lewy;
                Rodzic.Lewy = Pom.Prawy;
                Pom.Prawy   = Rodzic;

                // Rodzic = Pom;
                if (dziadek == null)
                {
                    glowa = Pom;
                }
                else
                {
                    if (dziadek.Lewy != null && dziadek.Lewy == Rodzic)
                    {
                        dziadek.Lewy = Pom;
                    }
                    else
                    {
                        dziadek.Prawy = Pom;
                    }
                }
            }
            else // Rotacja lewa
            {
                // po zamianie dziadek ma wskazywać na węzeł z kluczem
                Wezel dziadek = glowa.ZnajdzRodzica(Rodzic.Wartosc);

                Wezel Pom = Rodzic.Prawy;
                Rodzic.Prawy = Pom.Lewy;
                Pom.Lewy     = Rodzic;

                // Rodzic = Pom;
                if (dziadek == null)
                {
                    glowa = Pom;
                }
                else
                {
                    if (dziadek.Lewy != null && dziadek.Lewy == Rodzic)
                    {
                        dziadek.Lewy = Pom;
                    }
                    else
                    {
                        dziadek.Prawy = Pom;
                    }
                }
            }
        }