Пример #1
0
 public NodoDisjointSet(T6 valor, NodoDisjointSet <T6> padre = null)
 {
     Valor              = valor;
     Padre              = padre;
     this.hijos         = new LinkedList <NodoDisjointSet <T6> >();
     this.CantidadHijos = 0;
 }
Пример #2
0
            public double Promedio(int indice)
            {
                NodoDisjointSet <int> representante = SetOf(indice);
                double promedio = ((double)representante.SumaEdadesHijos + (double)representante.Valor) / ((double)representante.CantidadHijos + 1);

                return(Math.Round(promedio, 2));
            }
Пример #3
0
            public NodoDisjointSet <T7> SetOf(int indice)
            {
                NodoDisjointSet <T7> representante = this.lista[indice];

                while (representante.Padre != null)
                {
                    representante = representante.Padre;
                }
                return(representante);
            }
Пример #4
0
            public void Merge(int primerIndice, int segundoIndice)
            {
                NodoDisjointSet <T7> primerRepresentante  = SetOf(primerIndice);
                NodoDisjointSet <T7> segundoRepresentante = SetOf(segundoIndice);

                if (primerRepresentante != segundoRepresentante && primerRepresentante.CantidadHijos > segundoRepresentante.CantidadHijos)
                {
                    primerRepresentante.Hijos.AddLast(segundoRepresentante);
                    segundoRepresentante.Padre         = primerRepresentante;
                    primerRepresentante.CantidadHijos += segundoRepresentante.CantidadHijos + 1;
                }
                else if (primerRepresentante != segundoRepresentante)
                {
                    segundoRepresentante.Hijos.AddLast(primerRepresentante);
                    primerRepresentante.Padre           = segundoRepresentante;
                    segundoRepresentante.CantidadHijos += primerRepresentante.CantidadHijos + 1;
                }
                CantidadArboles--;
            }
Пример #5
0
            public void Merge(int primerIndice, int segundoIndice)
            {
                NodoDisjointSet <int> primerRepresentante  = SetOf(primerIndice);
                NodoDisjointSet <int> segundoRepresentante = SetOf(segundoIndice);

                if (primerRepresentante != segundoRepresentante && primerRepresentante.CantidadHijos > segundoRepresentante.CantidadHijos)
                {
                    primerRepresentante.Hijos.AddLast(segundoRepresentante);
                    segundoRepresentante.Padre           = primerRepresentante;
                    primerRepresentante.CantidadHijos   += segundoRepresentante.CantidadHijos + 1;
                    primerRepresentante.SumaEdadesHijos += segundoRepresentante.SumaEdadesHijos + segundoRepresentante.Valor;
                }
                else if (primerRepresentante != segundoRepresentante)
                {
                    segundoRepresentante.Hijos.AddLast(primerRepresentante);
                    primerRepresentante.Padre             = segundoRepresentante;
                    segundoRepresentante.CantidadHijos   += primerRepresentante.CantidadHijos + 1;
                    segundoRepresentante.SumaEdadesHijos += primerRepresentante.SumaEdadesHijos + primerRepresentante.Valor;
                }
            }