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
| | | |-+  problema con un arbol en una pila
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: problema con un arbol en una pila  (Leído 1,408 veces)
m@o_614


Desconectado Desconectado

Mensajes: 389


Ver Perfil
problema con un arbol en una pila
« en: 3 Enero 2015, 05:42 am »

Saludos

Tengo el siguiente codigo que lo que trabaja con una cola(Queue) y esta cola contiene una expresión en su forma postfija por ejemplo:

si tengo ((A*B) + (C/D)), la cola contendria : AB*CD/+, y luego tengo que crear el arbol binario de esta expresión. Para eso uso el siguiente algoritmo que trabaja con una pila

Código
  1. public static void construirArbol(){
  2.     int error = 0;
  3.     Stack<Object> pila = new Stack<Object>();
  4.     Arbol arbol = new Arbol();
  5.     Object izq,der,raiz,Elemento;
  6.     String d = "hijoDer",i = "hijoIzq",r = "raiz";
  7.     while(!s.isEmpty())
  8.     {
  9.        switch(caso(s.peek()))
  10.        {
  11.            case 1:
  12.               if(pila.size() < 2)
  13.                  error = 1;
  14.               else
  15.               {
  16.               raiz = s.peek();
  17.               der = pila.pop();
  18.               izq = pila.pop();
  19.               arbol.insertarNodo(raiz,r);
  20.               arbol.insertarNodo(izq,i);
  21.               arbol.insertarNodo(der,d);
  22.               pila.push(arbol);
  23.               }
  24.               break;
  25.            case 2:
  26.               error = 1;
  27.               break;
  28.            default:
  29.               pila.push(s.remove());
  30.        }
  31.     }
  32.     if(pila.isEmpty() || pila.size() > 1)
  33.       error = 1;
  34.     else
  35.     {
  36.     Elemento = pila.pop();
  37.     if(Elemento.)
  38.     {
  39.     //aqui el problema;
  40.     }
  41.     }
  42.     while(!pila.isEmpty())
  43.       pila.pop();
  44.    }

primero dentro de un while tengo a s, que es la Cola y voy quitando elemento por elemento y en un switch veo en cual case entra, si el elemento es un operador entra en el case 1 y si la pila contiene menos de 2 elementos es un error, sino creas un arbol con una raiz, que es el elemento, y despues sacas otros dos elementos de la cola para crear los nodos izquierdo y derecho y metes ese arbol en la pila, en el case default el elemento que se encuentre en s lo apilas.

Pero tengo una duda, una vez que te sales de ese while te encuentras con un if-else, ese if te dice que si la pila esta vacia o tiene mas de un elemento hay un error, y en el else tengo que quitar un elemento de Queue y verificar si ese elemento es un Arbol, pero COMO PUEDO VERIFICAR SI ES UN ARBOL??? si yo cuando declare la pila la declara para que pudiera contener elementos de cualquier tipo, por eso le puse Object

si alguien me pudiera dar una idea de como hacer esa verificación se lo agradecería mucho


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
problema pila cmos pc
Electrónica
smokg 9 9,643 Último mensaje 26 Febrero 2009, 01:12 am
por smokg
Problema con la pila
ASM
B14573R 4 3,975 Último mensaje 12 Diciembre 2009, 10:32 am
por Eternal Idol
Problema con arbol en ubuntu
Programación C/C++
Gallu 4 3,484 Último mensaje 28 Abril 2010, 12:24 pm
por Gallu
problema con pila del bios « 1 2 »
Hardware
Aeros 10 9,614 Último mensaje 11 Julio 2010, 16:46 pm
por simorg
Pila en C++ ¡Problema! Solucionado
Programación C/C++
¡Micronet! 2 8,414 Último mensaje 27 Octubre 2010, 04:46 am
por ¡Micronet!
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines