• Viernes 1 de Noviembre de 2024, 02:30

Autor Tema:  Busqueda De Un Subarbol Dentro De Un Arbol Binario  (Leído 954 veces)

soykies

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Busqueda De Un Subarbol Dentro De Un Arbol Binario
« en: Miércoles 27 de Junio de 2007, 13:34 »
0
Necesito hacer una funcion find que me busque dentro de un arbol binario de expresion, otro subarbol y devuelva el nodo del arbol, donde comienza.

Por ejemplo, tengo el arbol  
  +
 / \
*  7
/ \
2  3

Y la subexpresion  

 *
/  \
2   3

Esta funcion find me devolveria el nodo que contiene el *

Creo que la mejor forma de hacerlo sería recursivamente.

La cabecera de la funcion debe ser algo asi:


pair<subexpresion, bool> find(const expresion & e);

Donde subexpresion es del tipo expresion::node (es el nodo que tiene que devolver)
bool devuelve true o false si lo ha encontrado o no
y expresion es un bintree<dato>


Asi sería el private de mi .h:


class expresion{
   private:
      class dato{
      public:
         pair<T,char> dat;

         dato(const T &d){
         dat.first=d;
         dat.second='\0';
         }

         dato(const char &d){
         dat.first=T();//nulo del tipo T
         dat.second=d;
         }

         bool esoperando() const{
         return (dat.second=='\0');
         }

         bool esoperador() const{
         return (dat.second!='\0' && !esvariable());
         }
         bool esvariable() const{
         return (dat.second>96 && dat.second<123);
         }
         T getT() const{
         return dat.first;
         }
         char getchar() const{
         return dat.second;
         }
      };
      class subexpresion{
         private:
            typename bintree<typename expresion<T>::dato>::node subex;
         public:
            subexpresion(typename bintree<typename expresion<T>::dato>::node & e){
               subex=e;
            }


      };
      bintree<typename expresion<T>::dato> arbol;
      expresion(const bintree<typename expresion<T>::dato> &e) {arbol = e;};



Gracias por vuestras ayudas y/o sugerencias