public void porNivel()
        {
            Cola <NodoGeneral <T> > cola = new Cola <NodoGeneral <T> >();

            cola.encolar(this.getRaiz());
            while (!cola.esVacia())
            {
                NodoGeneral <T> nodo = cola.desencolar();
                Console.WriteLine(nodo.getDato());
                foreach (NodoGeneral <T> element in nodo.getHijos())
                {
                    cola.encolar(element);
                }
            }
        }
        public int altura(ArbolGeneral <int> arbol)
        {
            NodoGeneral <int> nodo = arbol.getRaiz();
            int alturaMaxima       = 0;
            int alturaTemporal;

            if (nodo == null)
            {
                return(alturaMaxima);
            }
            else
            {
                for (int i = 0; i < nodo.getHijos().Count; i++)
                {
                    alturaTemporal = altura(arbol.getHijos()[i]);
                    if (alturaTemporal > alturaMaxima)
                    {
                        alturaMaxima = alturaTemporal;
                    }
                }
                return(alturaMaxima);
            }
        }
 public ArbolGeneral(T dato)
 {
     this.raiz = new NodoGeneral <T>(dato);
 }
 private ArbolGeneral(NodoGeneral <T> nodo)
 {
     this.raiz = nodo;
 }