elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Arbol ABB java
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Arbol ABB java  (Leído 3,275 veces)
ditou

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Arbol ABB java
« en: 15 Noviembre 2013, 06:38 am »

2)  Escibir un algoritmo que reciba un ABBTDA y determine si se trata de un arbol binario
 perfecto..

perfecto = la raiz y todos los nodos intermedios tienen 2 hijos y todas las hjas estan
a la misma profundidad.


public boolean EsPerfecto(ABBTDA a)
{
   ColaPrioridadTDA cola = new ColaPrioridadE();
   int aux = -1;
   int prioridad = -1;
   boolean resultado = true;

   cola.inicializar();
   revisar(a, 0, cola);

   if(cola.colaVacia())
      resultado = false;

   while(!cola.ColaVacia())
   {
      if(aux == -1 && prioridad == -1)
      {
         aux = cola.Primero();
         prioridad = cola.Prioridad();
      }
      else
      {
         if(prioridad != cola.Prioridad())
            resultado = false;
      }

      cola.Desacolar();
   }

   return resultado;
}

public void revisar(ABBTDA a, int altura, ColaPrioridadTDA cola)
{
   if(!a.ArbolVacio())
   {
      if(a.hijoIzquierdo().arbolVacio() && a.hijoDerecho().arbolVacio())
      {
         cola.AcolarPrioridad(a.Raiz(), altura);
      }
      else
      {
         if(!a.hijoIzquierdo().arbolVacio() && !a.hijoDerecho().arbolVacio())
         {
            revisar(a.hijoIzquierdo(), altura+1);
            revisar(a.hijoDerecho(), altura+1);
         }
         else
         {
            cola.Inicializar();
         }
      }
      
   }

}


Se que lo que esta mal es el ELSE que hago cola.Inicializar(); porque despues el programa sigue y guarda cosas en la cola.

Pero no se me ocurre como hacer para que eel programa se corte ahi de alguna forma para que me devuelva la cola vacia cuando un nodo tiene 1 solo hijo.


Saludos.


En línea

ditou

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Arbol ABB java
« Respuesta #1 en: 15 Noviembre 2013, 07:39 am »

Ya lo  pude resolver.

Aunque me gustaría si me pueden ayudar en que si de alguna forma, el metodo Revisar, pueda terminarse en el mismisimo instante que hago cola.InicializarCola();
con algun tipo de instruccion,..




pd: para resolverlo le puse cola.AcolarPrioridad(100, -2), entonces cuando va a verificar ''hay un nodo hoja'' que no esta en la misma altura que el resto. Es medio desastroso, debe existir alguna forma mas limpia de hacerlo, pero no se me ocurre, la verdad.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Recorrer árbol en Java
Java
BeyBey 2 21,374 Último mensaje 28 Julio 2004, 23:37 pm
por BeyBey
Crear árbol en Java
Java
raquelper 2 16,874 Último mensaje 24 Agosto 2004, 03:31 am
por raquelper
Árbol multirrama en Java. ¿Estándar?
Java
Trickman 2 3,694 Último mensaje 7 Noviembre 2009, 16:42 pm
por Trickman
Duda:Arbol genealogico en java
Java
Mioshi 4 9,778 Último mensaje 30 Noviembre 2011, 20:08 pm
por Mioshi
Ayuda recursividad y árbol java.
Ejercicios
Caruko 0 2,638 Último mensaje 17 Noviembre 2014, 21:02 pm
por Caruko
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines