2011-09-24 30 views
-1

我想在找到它之后返回节点的地址。如何返回节点的地址?

节点对象类是树类集合为私有内部(私有里面的节点)

我会告诉你一个功能非常类似于我想要什么,但有一个布尔返回类型。 如果节点存在于树中,则返回true;如果不存在,则返回false,我只想返回包含元素Im的节点的指针或地址,以便将来可以使用它。

下面是函数。 (“T”型IM的传球为整数)

template <class T> 
class Arbol 
{ 
    private: 
    template <class DNodo> 
    class Nodo 
    { 
     public: 
      Nodo(const DNodo datoPasado, 
       Nodo<DNodo> *izqPasado=NULL,//HIJO IZQUIERDO NULL 
       Nodo<DNodo> *derPasado=NULL)//HIJO DERECHO NULL 
        : dato(datoPasado),izq(izqPasado),der(derPasado){} 
        Nodo(); 
      //members 
      DNodo   dato; 
      Nodo<DNodo> *izq; 
      Nodo<DNodo> *der; 
    }; 

    Nodo<T> *raiz;//variable raiz de la clase interna 
    Nodo<T> *actual;//posicion actual 
    int contador;//contador 
    int altura;//altura 
    //////////////////////////////////////////////// 
    public: 
    Arbol() : raiz(NULL), actual(NULL){}; 
    //Iniciar(const T &t); 
    ~Arbol(); 
    //INSERTO EN EL ARBOL 
    void Insertar(const T t); 
    //BORRO ELEMENTO DEL ARBOL 
    void Borrar(const T t); 
    //Busca un elemento del arbol 
    bool Buscar(const T t); 
    //Busca y devuelve puntero a elemento 
    Nodo<T>* BuscarDevolver(const T t); 
    //EsVacio ???? 
    bool EsVacio(); 

    }; 



    template<class T> 
    Node<T>* Arbol<T>::BuscarDevolver(const T t) 
    { 
    if(!EsVacio()) 
    { 
     actual = raiz; 
     while(actual!=NULL) 
     if(actual->dato == t) 
      return actual; 
     else if(t < actual->dato) 
      { 
       actual = actual->izq; 
      } 
     else if(t > actual->dato) 
     { 
      actual = actual->der; 
     } 

    } 
    return NULL; 
} 

正如你可能注意到了这一点林提前在二叉树寻找一个节点试图帮助 感谢。

即时得到像“节点没有指定类型”

+0

你得到的错误是不由您发布的代码触发,发布实际代码。当我设置的返回类型 –

+0

我得到的错误发生: 模板 节点 * ARBOL :: Buscar(常量T T [) – HoNgOuRu

+0

好编辑代码,以反映这一点。另外显示'Node'的定义,顺便说一句,不是'Arbol'中的嵌套类型吗? –

回答

2

Node是内Arbol嵌套类型,所以你实际上应该声明你的函数类似这样的错误:

template< class T > Arbol<T>::Node<T>* Arbol<T>::Buscar(const T t); 
+0

IT WORKS非常感谢 – HoNgOuRu

+0

的解决方案包括在代码改变为:在声明 : Nodo * ARBOL :: BuscarDevolver(常量T T [){.......} 和函数的返回键入到 模板 Arbol :: Nodo * – HoNgOuRu