コード例 #1
0
        //Ancho
        public int ancho()
        {
            if (this.esHoja())
            {
                return(1);
            }

            Cola <ArbolGeneral <T> > cola = new Cola <ArbolGeneral <T> >();

            cola.encolar(this);             //Encolas la raiz
            int ancho = 0;

            while (!cola.esVacia())             //Mientras la cola no este vacia
            {
                int anchoTemporal = cola.cantidad();
                if (anchoTemporal > ancho)
                {
                    ancho = anchoTemporal;
                }

                while (anchoTemporal-- > 0)
                {
                    ArbolGeneral <T> nodo = cola.desencolar();
                    foreach (ArbolGeneral <T> hijo in nodo.getHijos())
                    {
                        cola.encolar(hijo);
                    }
                }
            }
            return(ancho);
        }
コード例 #2
0
        public int nivel(ArbolGeneral <T> dato)
        {
            Cola <ArbolGeneral <T> > c = new Cola <ArbolGeneral <T> >();
            ArbolGeneral <T>         aux;
            int nivel = 0;

            c.encolar(this);
            c.encolar(null);
            while (!c.esVacia())
            {
                aux = c.desencolar();
                if (aux == dato)
                {
                    return(nivel);
                }
                if (aux == null)
                {
                    nivel++;
                    if (!c.esVacia())
                    {
                        c.encolar(null);
                    }
                }
                else
                {
                    foreach (var hijo in aux.getHijos())
                    {
                        c.encolar(hijo);
                    }
                }
            }
            return(nivel);
        }
コード例 #3
0
        public static void Main(string[] args)
        {
            //Ejemplo de arbol general.

            ArbolGeneral <int> arbol       = new ArbolGeneral <int>(1);
            ArbolGeneral <int> primerHijo  = new ArbolGeneral <int>(2);
            ArbolGeneral <int> segundoHijo = new ArbolGeneral <int>(3);
            ArbolGeneral <int> tercerHijo  = new ArbolGeneral <int>(4);
            ArbolGeneral <int> cuartoHijo  = new ArbolGeneral <int>(11);

            ArbolGeneral <int> hijoDeCuarto  = new ArbolGeneral <int>(88);
            ArbolGeneral <int> nietoDeCuarto = new ArbolGeneral <int>(100);

            arbol.agregarHijo(primerHijo);
            arbol.agregarHijo(segundoHijo);
            arbol.agregarHijo(tercerHijo);
            arbol.agregarHijo(cuartoHijo);


            primerHijo.agregarHijo(new ArbolGeneral <int>(5));
            primerHijo.agregarHijo(new ArbolGeneral <int>(6));

            segundoHijo.agregarHijo(new ArbolGeneral <int>(7));

            tercerHijo.agregarHijo(new ArbolGeneral <int>(8));

            cuartoHijo.agregarHijo(hijoDeCuarto);
            hijoDeCuarto.agregarHijo(nietoDeCuarto);



            Console.Write("Preorden: "); arbol.preorden();
            Console.WriteLine();
            Console.Write("Inorden: "); arbol.inorden();
            Console.WriteLine();
            Console.Write("Postorden: "); arbol.postorden();
            Console.WriteLine();
            Console.Write("Por Niveles: "); arbol.porNiveles();
            Console.WriteLine();

            Console.WriteLine("=======================================================================================");

            Console.WriteLine("La cantidad de hijos del nodo raiz es de: {0}", arbol.getHijos().Count);

            Console.WriteLine("La altura del arbol,sin contar la raiz,es de: {0}", arbol.altura());

            int dato = 7;

            Console.WriteLine("El nivel del dato {0} es: {1}", dato, arbol.nivel(dato));
            Console.WriteLine("El ancho del arbol es: {0}", arbol.ancho());


            Console.Write("Press any key to continue . . . ");
            Console.ReadKey(true);
        }
コード例 #4
0
        public void porNiveles()
        {
            Cola <ArbolGeneral <T> > cola = new Cola <ArbolGeneral <T> >();

            cola.encolar(this);
            while (!cola.esVacia())
            {
                ArbolGeneral <T> nodo = cola.desencolar();
                Console.Write(nodo.getDatoRaiz() + " ");
                if (nodo.getHijos().Count != 0)
                {
                    foreach (ArbolGeneral <T> hijo in nodo.getHijos())
                    {
                        cola.encolar(hijo);
                    }
                }
            }
        }
コード例 #5
0
        static void Main(string[] args)
        {
            ArbolGeneral <string> arbolD = new ArbolGeneral <string>("blanco");
            ArbolGeneral <string> arbolA = new ArbolGeneral <string>("gris");
            ArbolGeneral <string> arbolV = new ArbolGeneral <string>("blanco");
            ArbolGeneral <string> arbolI = new ArbolGeneral <string>("negro");
            ArbolGeneral <string> arbolB = new ArbolGeneral <string>("negro");
            ArbolGeneral <string> arbolJ = new ArbolGeneral <string>("negro");
            ArbolGeneral <string> arbolU = new ArbolGeneral <string>("blanco");
            ArbolGeneral <string> arbolK = new ArbolGeneral <string>("blanco");
            ArbolGeneral <string> arbolX = new ArbolGeneral <string>("negro");

            arbolD.agregarHijo(arbolA);
            arbolD.agregarHijo(arbolV);
            arbolD.agregarHijo(arbolI);
            arbolD.agregarHijo(arbolB);
            arbolV.agregarHijo(arbolJ);
            arbolV.agregarHijo(arbolU);
            arbolV.agregarHijo(arbolK);
            arbolV.agregarHijo(arbolX);
            //RedAgua r = new RedAgua(arbolD);
            QuadTree q = new QuadTree(arbolD);

            Console.Write("Inorden: ");
            arbolD.inOrden();
            Console.WriteLine();
            Console.Write("preOrden: ");
            arbolD.preOrden();
            Console.WriteLine();
            Console.Write("postOrden: ");
            arbolD.postOrden();
            Console.WriteLine();
            Console.Write("porNiveles: ");
            arbolD.porNiveles();
            Console.WriteLine();
            Console.Write("Altura: " + arbolD.altura());
            Console.WriteLine();
            Console.Write("Ancho: " + arbolD.ancho());
            Console.WriteLine();
            Console.Write("Nivel: " + (arbolD.nivel(arbolD)));
            Console.WriteLine();
            //Console.Write("Caudal mínimo: "+r.caudalMinimo(1000));
            Console.Write("Píxeles: " + q.quadTree(1024));
        }
コード例 #6
0
        static void Main(string[] args)
        {
            ArbolGeneral <int> arbol = new ArbolGeneral <int>(10);

            ArbolGeneral <int> hijo1 = new ArbolGeneral <int>(20);
            ArbolGeneral <int> hijo2 = new ArbolGeneral <int>(30);
            ArbolGeneral <int> hijo3 = new ArbolGeneral <int>(40);

            arbol.agregarHijo(hijo1);
            arbol.agregarHijo(hijo2);
            arbol.agregarHijo(hijo3);

            for (int i = 1; i < 3; i++)
            {
                hijo1.agregarHijo(new ArbolGeneral <int>(i + 20));
                hijo2.agregarHijo(new ArbolGeneral <int>(i + 30));
                hijo3.agregarHijo(new ArbolGeneral <int>(i + 40));
            }

            Console.WriteLine(arbol.Altura());
            arbol.Altura();
            Console.ReadKey(true);
        }
コード例 #7
0
 public RedAgua(ArbolGeneral <float> arbol)
 {
     this.arbol = arbol;
 }
コード例 #8
0
ファイル: ArbolGeneral.cs プロジェクト: NicoDyJ/TP1
 public void eliminarHijo(ArbolGeneral <T> hijo)
 {
     this.raiz.getHijos().Remove(hijo.getRaiz());
 }
コード例 #9
0
ファイル: ArbolGeneral.cs プロジェクト: NicoDyJ/TP1
 public void agregarHijo(ArbolGeneral <T> hijo)
 {
     this.raiz.getHijos().Add(hijo.getRaiz());
 }
コード例 #10
0
 public QuadTree(ArbolGeneral <string> arbol)
 {
     this.arbol = arbol;
 }
コード例 #11
0
 public void eliminarHijo(ArbolGeneral <T> hijo)
 {
     this.getHijos().Remove(hijo);
 }
コード例 #12
0
 public void agregarHijo(ArbolGeneral <T> hijo)
 {
     this.getHijos().Add(hijo);
 }