• Domingo 15 de Diciembre de 2024, 03:43

Autor Tema:  Ayuda Con Arbol Binario  (Leído 899 veces)

Perrero

  • Miembro MUY activo
  • ***
  • Mensajes: 209
    • Ver Perfil
Ayuda Con Arbol Binario
« en: Domingo 1 de Julio de 2007, 18:37 »
0
Tengo un problema al tratar de insertar datos a un arbol binario, el codigo q estoy haciendo es el siguiente.

Código: Text
  1.  
  2.    typedef struct Nodo
  3. {
  4.    int Dato;
  5.    struct Nodo *Derecho,*Izquierdo;
  6. }*TNodo;
  7.  
  8. class ArbolBinario
  9. {
  10.    private:
  11.       TNodo raiz;
  12.       AnsiString Cadena;
  13.    public:
  14.       ArbolBinario();
  15.       ~ArbolBinario();
  16.       void Crear(TNodo nodo,int dato);
  17.       void Preorden(TNodo nodo);
  18.       void PostOrden(TNodo nodo);
  19.       void InOrden(TNodo nodo);
  20.       void Operar(TNodo nodo);
  21.       AnsiString Mostrar();
  22.       TNodo GetRaiz();
  23. };
  24.  
  25.  
  26.    ArbolBinario::ArbolBinario()
  27.    {
  28.       raiz = NULL;
  29.       Cadena = "";
  30.    }
  31.    ArbolBinario::~ArbolBinario()
  32.    {}
  33.    void ArbolBinario::Crear(TNodo nodo,int dato)
  34.    {
  35.       if (nodo==NULL)
  36.       {
  37.          nodo = new Nodo;
  38.          nodo->Dato = dato;
  39.          nodo->Derecho = NULL;
  40.          nodo->Izquierdo = NULL;
  41.       }
  42.       else
  43.          if (dato<nodo->Dato)
  44.             Crear(nodo->Derecho,dato);
  45.          else
  46.             if (dato>nodo->Dato)
  47.                Crear(nodo->Izquierdo,dato);
  48.    }
  49.    void ArbolBinario::Preorden(TNodo nodo)
  50.    {
  51.       if (nodo!=NULL)
  52.       {
  53.          Operar(nodo);
  54.          Preorden(nodo->Izquierdo);
  55.          Preorden(nodo->Derecho);
  56.       }
  57.    }
  58.    void ArbolBinario::PostOrden(TNodo nodo)
  59.    {
  60.       if (nodo!=NULL)
  61.       {
  62.          PostOrden(nodo->Izquierdo);
  63.          PostOrden(nodo->Derecho);
  64.          Operar(nodo);
  65.       }
  66.    }
  67.    void ArbolBinario::InOrden(TNodo nodo)
  68.    {
  69.       if (nodo!=NULL)
  70.       {
  71.          InOrden(nodo->Izquierdo);
  72.          Operar(nodo);
  73.          InOrden(nodo->Derecho);
  74.       }
  75.    }
  76.    void ArbolBinario::Operar(TNodo nodo)
  77.    {
  78.       Cadena+=(AnsiString)nodo->Dato;
  79.    }
  80.    AnsiString ArbolBinario::Mostrar()
  81.    {
  82.       return (Cadena);
  83.    }
  84.    TNodo ArbolBinario::GetRaiz()
  85.    {
  86.       return (raiz);
  87.    }
  88.  
  89.  

No se q estoy haciendo mal, al momento de crear el nodo siempre le mando a la raiz para q comienze a realizar la busqueda desde hay, pero la raiz nunca cambia su valor y siempre sigue en NULL y por ende siempre, cada vez q ingreso un dato, ingresa de frente al if, pero a la hora de querer mostrarlo no lo imprime xq sigue siendo NULL. Alguien seria tan amable de explicarme en que estoy fallando?, gracias de antemano.