public NodoDisjointSet(T6 valor, NodoDisjointSet <T6> padre = null) { Valor = valor; Padre = padre; this.hijos = new LinkedList <NodoDisjointSet <T6> >(); this.CantidadHijos = 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)); }
public NodoDisjointSet <T7> SetOf(int indice) { NodoDisjointSet <T7> representante = this.lista[indice]; while (representante.Padre != null) { representante = representante.Padre; } return(representante); }
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--; }
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; } }