Example #1
0
        public void Wypisz(Wezel root)
        {
            if (root == null)
            {
                throw new NotImplementedException();
            }

            Wypisz(root.lewy);
            Wypisz(root.prawy);
        }
Example #2
0
        public void RotacjaRR(ref Wezel root)
        {
            //zmiana pozycji
            Wezel A = root;

            root = A.lewy;
            Wezel II = root.prawy;

            root.prawy      = A;
            root.prawy.lewy = II;
        }
Example #3
0
        public WezelPolski WstawSlowo(ref WezelPolski root, string slowoPolskie)
        {
            if (root == null) //gdy dotrze do końca drzewa, tworzy nowy element
            {
                root = new WezelPolski
                {
                    slowo = slowoPolskie
                };
            }
            else if (string.Compare(slowoPolskie, root.slowo) < 0)
            {
                WezelPolski lewy = (WezelPolski)root.lewy;
                root.lewy = WstawSlowo(ref lewy, slowoPolskie);
                root.waga++;
            }
            else if (string.Compare(slowoPolskie, root.slowo) > 0)
            {
                WezelPolski prawy = (WezelPolski)root.prawy;
                root.prawy = WstawSlowo(ref prawy, slowoPolskie);
                root.waga--;
            }
            else
            {
                throw new AVLException("Slowo znajduje sie juz w zbiorze, synonimy sa niedopuszczalne");
            }
            //sprawdzanie wag

            /*if (root.waga == 0)
             *  //w jaki sposób można przerwać rekurencje?
             *  throw new NotImplementedException();
             */
            if (root.waga == 2)
            {
                if (root.lewy.waga == 1)
                {
                    Wezel wezel = root;
                    RotacjaRR(ref wezel);
                    root = (WezelPolski)wezel;
                    //ustawianie nowych wag
                    root.waga       = 0;
                    root.prawy.waga = 0;
                }
                else
                {
                    Wezel C     = root.lewy.prawy;
                    Wezel wezel = root.lewy;
                    RotacjaLL(ref wezel);
                    root.lewy = (WezelPolski)wezel;
                    wezel     = root;
                    RotacjaRR(ref wezel);
                    root = (WezelPolski)wezel;
                    //ustawianie nowych wag
                    root.waga = 0;
                    switch (C.waga)
                    {
                    case (1):

                        root.prawy.waga = 0;
                        root.lewy.waga  = -1;
                        break;

                    case (0):

                        root.prawy.waga = 0;
                        root.lewy.waga  = 0;
                        break;

                    case (-1):
                        root.prawy.waga = 0;
                        root.lewy.waga  = 1;
                        break;
                    }
                }
            }
            if (root.waga == -2)
            {
                if (root.prawy.waga == 1)
                {
                    Wezel C     = root.prawy.lewy;
                    Wezel wezel = root.prawy;
                    RotacjaRR(ref wezel);
                    root.prawy = (WezelPolski)wezel;
                    wezel      = root;
                    RotacjaLL(ref wezel);
                    root = (WezelPolski)wezel;
                    //ustawianie nowych wag
                    root.waga = 0;
                    switch (C.waga)
                    {
                    case (1):

                        root.prawy.waga = 0;
                        root.lewy.waga  = -1;
                        break;

                    case (0):

                        root.prawy.waga = 0;
                        root.lewy.waga  = 0;
                        break;

                    case (-1):
                        root.prawy.waga = 0;
                        root.lewy.waga  = 1;
                        break;
                    }
                }
                else
                {
                    Wezel wezel = root;
                    RotacjaLL(ref wezel);
                    root = (WezelPolski)wezel;
                    //ustawianie nowych wag
                    root.waga       = 0;
                    root.prawy.waga = 0;
                }
            }
            return(root);
        }
Example #4
0
 public void RotacjaLR(ref Wezel root)
 {
     throw new NotImplementedException();
 }