Ejemplo n.º 1
0
        public static bool ProvjeriFR(Cvor cvor)
        {
            if (cvor.Roditelj != null && cvor.Roditelj.FR == 2)
            {
                if (cvor.FR == 1)
                {
                    Cvor pom1 = cvor.Roditelj;
                    Cvor pom2 = cvor;

                    LijevaRotacija(cvor.Roditelj, cvor);
                    pom1.PostaviVisine();
                    pom2.PostaviVisine();
                    return(true);
                }
                if (cvor.FR == -1)
                {
                    Cvor djed = cvor.Roditelj;
                    Cvor pom  = cvor.LijevoDijete;

                    DesnaRotacija(cvor, pom);
                    LijevaRotacija(djed, pom);
                    cvor.PostaviVisine();
                    djed.PostaviVisine();
                    pom.PostaviVisine();
                    return(true);
                }
            }
            if (cvor.Roditelj != null && cvor.Roditelj.FR == -2)
            {
                if (cvor.FR == 1)
                {
                    Cvor djed = cvor.Roditelj;
                    Cvor pom  = cvor.DesnoDijete;

                    LijevaRotacija(cvor, pom);
                    DesnaRotacija(djed, pom);
                    cvor.PostaviVisine();
                    djed.PostaviVisine();
                    pom.PostaviVisine();
                    return(true);
                }
                if (cvor.FR == -1)
                {
                    Cvor pom1 = cvor.Roditelj;
                    Cvor pom2 = cvor;

                    DesnaRotacija(cvor.Roditelj, cvor);
                    pom1.PostaviVisine();
                    pom2.PostaviVisine();
                    return(true);
                }
            }

            if (cvor.Roditelj != null && cvor.Roditelj.FR == 0)
            {
                return(true);
            }
            return(false);
        }
Ejemplo n.º 2
0
        static void PostaviVisineDel(Cvor cvor)
        {
            if (cvor == null)
            {
                return;
            }
            cvor.PostaviVisine();
            Cvor tmp1;
            Cvor tmp2;
            Cvor tmp3;

            switch (cvor.FR)
            {
            case 0: PostaviVisineDel(cvor.Roditelj);
                return;

            case 1: return;

            case -1: return;

            case 2:
                switch (cvor.DesnoDijete.FR)
                {
                case 0:
                    tmp1 = cvor;
                    tmp2 = cvor.DesnoDijete;
                    LijevaRotacija(cvor, cvor.DesnoDijete);
                    PostaviVisineDel(tmp1);
                    PostaviVisineDel(tmp2);
                    return;

                case 1:
                    tmp1 = cvor;
                    tmp2 = cvor.DesnoDijete;
                    LijevaRotacija(cvor, cvor.DesnoDijete);
                    PostaviVisineDel(tmp1);
                    PostaviVisineDel(tmp2);
                    return;

                case -1:
                    tmp1 = cvor;
                    tmp2 = cvor.DesnoDijete;
                    tmp3 = cvor.DesnoDijete.LijevoDijete;
                    DesnaRotacija(tmp2, tmp3);
                    LijevaRotacija(tmp1, tmp3);
                    PostaviVisineDel(tmp1);
                    PostaviVisineDel(tmp2);
                    PostaviVisineDel(tmp3);
                    return;
                }
                break;

            case -2:
                switch (cvor.LijevoDijete.FR)
                {
                case 0:
                    tmp1 = cvor;
                    tmp2 = cvor.LijevoDijete;
                    DesnaRotacija(cvor, cvor.LijevoDijete);
                    PostaviVisineDel(tmp1);
                    PostaviVisineDel(tmp2);
                    return;

                case -1:
                    tmp1 = cvor;
                    tmp2 = cvor.LijevoDijete;
                    DesnaRotacija(cvor, cvor.LijevoDijete);
                    PostaviVisineDel(tmp1);
                    PostaviVisineDel(tmp2);
                    return;

                case 1:
                    tmp1 = cvor;
                    tmp2 = cvor.LijevoDijete;
                    tmp3 = cvor.LijevoDijete.DesnoDijete;
                    LijevaRotacija(tmp2, tmp3);
                    DesnaRotacija(tmp1, tmp3);
                    PostaviVisineDel(tmp1);
                    PostaviVisineDel(tmp2);
                    PostaviVisineDel(tmp3);
                    return;
                }
                break;
            }
        }