saludos soy nuevo en el foro, para ver quien me ayuda con arboles binarios , bueno estoy confundido en como hacer el metodo insertar de manera recursiva, los nodos tengo que hacerlos como clases y no como struct, entiendo que al metodo insertar tengo que pasarle un puntero al nodo raiz pero como lo hago o deberia pasar el arbol?,gracias de antemano
#include<iostream>
using namespace std;
template<class Tipo> class arbol;
template<class Tipo>
class Nodo{
      //Atributos
      private:
       Tipo clave;
       Nodo<Tipo> *izquierdo;
       Nodo<Tipo> *derecho;      
       //metodo constructor 
       public: 
       Nodo(){              
              izquierdo=derecho=NULL;              
              }              
         friend class arbol<Tipo>;     
};
template<class Tipo>
class arbol{  
      //atributos 
      private:
       Nodo<Tipo> *raiz;
       Nodo<Tipo> *actual;       
      //metodo constructor
      public:
      arbol(){              
              raiz=NULL;
              actual=NULL;              
              }        
      //metodos       
   //   ~arbol();
      bool Esvacio();
      void Insertar(arbol **,Tipo);            
};
template<class Tipo>
void arbol<Tipo>::Insertar(arbol **a,const Tipo dato){     
    if(*a==NULL){    
       *a= new Nodo<Tipo>();
       *a->clave=dato;                       
    }
    else if((*a)->clave<dato)
         Insertar(&(*a)->derecho,dato);         
    else if((*a)->clave>dato)
         Insertar(&(*a)->izquierdo,dato);      
}
int main(){        
    arbol<int> tree;
    tree.Insertar(&tree,8);        
    system("PAUSE");
    return 0;
    }