//Implemento la interfaz ICloneable para tener la capacidad de clonar Hoja's
        public object Clone()
        {
            Hoja temporal = new Hoja();

            temporal.valor = valor;
            return(temporal);
        }
        private void InicializarHijas()
        {
            hijas = new Hoja[2];

            for (int i = 0; i < hijas.Length; i++)
            {
                hijas[i] = new Hoja();
                hijas[i].AsignarPadre(this);
            }
        }
        private void IntercambiarValores(Hoja actual, Hoja padre)
        {
            //Aqui utilice recursividad para poder compararar ademas entre el padre y el objeto actual, tambien entre el padre y su abuelo, y su abuelo y su visabuelo, etc.
            if (!(padre is null) && actual.valor < padre.valor)
            {
                int?valorTemporal = padre.valor;
                padre.valor  = actual.valor;
                actual.valor = valorTemporal;

                IntercambiarValores(actual.padre, padre.padre);
            }
        }
Ejemplo n.º 4
0
        static void Main(string[] args)
        {
            #region AlgunasImplementaciones
            Hoja inicio = new Hoja();

            inicio.AsignarValor(25);                   //10

            inicio.ObtenerHijas()[0].AsignarValor(12); //25
            inicio.ObtenerHijas()[1].AsignarValor(10); //12

            inicio.ObtenerHijas()[0].ObtenerHijas()[0].AsignarValor(-8);
            inicio.ObtenerHijas()[0].ObtenerHijas()[1].AsignarValor(34);

            inicio.ObtenerHijas()[1].ObtenerHijas()[0].AsignarValor(-4);
            inicio.ObtenerHijas()[1].ObtenerHijas()[1].AsignarValor(-25);

            //ColaConPrioridad prioridad = new ColaConPrioridad();


            //prioridad.Encolar(12); //25

            //Console.WriteLine(prioridad.Pico().ObtenerValor());

            //prioridad.Encolar(10); //12

            //prioridad.Encolar(-8);

            //prioridad.Encolar(34);


            //prioridad.Encolar(-4);

            //prioridad.Encolar(-25);

            Console.WriteLine(inicio.ObtenerValor());

            Console.WriteLine(inicio.ObtenerHijas()[0].ObtenerValor());
            Console.WriteLine(inicio.ObtenerHijas()[1].ObtenerValor());

            Console.WriteLine(inicio.ObtenerHijas()[0].ObtenerHijas()[0].ObtenerValor());

            Console.WriteLine(inicio.ObtenerHijas()[0].ObtenerHijas()[1].ObtenerValor());

            Console.WriteLine(inicio.ObtenerHijas()[1].ObtenerHijas()[0].ObtenerValor());

            Console.WriteLine(inicio.ObtenerHijas()[1].ObtenerHijas()[1].ObtenerValor());

            Console.WriteLine();



            //Console.WriteLine(prioridad.Pico().ObtenerHijas()[0].ObtenerValor());
            //Console.WriteLine(prioridad.Pico().ObtenerHijas()[1].ObtenerValor());

            //Console.WriteLine(prioridad.Pico().ObtenerHijas()[0].ObtenerHijas()[0].ObtenerValor());

            //Console.WriteLine(prioridad.Pico().ObtenerHijas()[0].ObtenerHijas()[1].ObtenerValor());

            //Console.WriteLine(prioridad.Pico().ObtenerHijas()[1].ObtenerHijas()[0].ObtenerValor());

            //Console.WriteLine(prioridad.Pico().ObtenerHijas()[1].ObtenerHijas()[1].ObtenerValor());

            //Console.WriteLine();

            //Console.WriteLine("Valor Padre: {0}", inicio.ObtenerValor());
            //Console.WriteLine("Valor Hija izquierda: {0}", inicio.ObtenerHijas()[0].ObtenerValor());
            //Console.WriteLine("Valor Hija derecha: {0}", inicio.ObtenerHijas()[1].ObtenerValor());
            //Console.ReadLine();
            #endregion


            Console.ReadLine();
        }
 private void AsignarPadre(Hoja hoja_padre)
 {
     padre = hoja_padre;
 }