2011-09-24 5 views
-1

노드를 찾은 후 노드의 주소를 반환하고 싶습니다.노드 주소를 어떻게 반환합니까?

노드 객체 클래스는

내가 당신에게 내가 원하는뿐만 부울 반환 값의 형태와 매우 유사 기능을 보여주지 (개인이 내부 노드) 비공개로 설정 트리 클래스 안에 있습니다. 노드가 트리 내에 존재하면 true를 반환하고, 존재하지 않으면 false를 반환합니다. 찾고자하는 요소가 포함 된 노드의 포인터 나 주소 만 반환하려는 것이므로 향후에 사용할 수 있습니다.

아래 기능입니다. 당신이 도와 주려고을 위해 사전에 이진 트리에서 노드 감사를 검색 임을 알 수있는 바와 같이

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; 
} 

(이하 "t"메신저 통과는 정수).

임지고 실제로이 같은 함수를 선언해야하므로,

+0

당신이 얻을 오류가 아닌 귀하가 게시 한 코드에 의해 실행되고 실제 코드를 게시하십시오. 내가 할 –

+0

오류가 나는 반환 형식을 설정할 때 발생합니다 템플릿 노드를 * Arbol :: Buscar (CONST T의 t) – HoNgOuRu

+0

이 우물을 반영하기 위해 코드를 편집 할 수 있습니다. 또한'Node'의 정의를 보여줍니다, 그런데'Arbol'에서 중첩 된 타입이 아닌가요? –

답변

2

NodeArbol 내에서 중첩 타입은 "노드는 타입의 이름이없는"와 같은 오류 :

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

는 IT가 THANKS에게 – HoNgOuRu

+0

용액에 코드를 변경하는 것으로 구성 많은 일들 은 있소 * Arbol :: BuscarDevolver (CONST T를 t) {.........} 및 함수 리턴 형식을 Arbol :: Nodo * – HoNgOuRu

관련 문제