Ver Mensaje Individual
  #4 (permalink)  
Antiguo 15/03/2013, 07:43
Avatar de cronopiomx
cronopiomx
 
Fecha de Ingreso: mayo-2012
Ubicación: Programing Cloud
Mensajes: 282
Antigüedad: 12 años
Puntos: 28
Respuesta: Problema en Arbol?

Hola, gracias por la respuesta, el uso de punteros esta bien y funciona, el problema era en la función TreeContains(), ese metodo estaba mal por las siguientes razones:

1. Primero compruebas si es la raiz, de ser correcto retornas el nodo.

2. Si no es la raiz, compruebas que si es el izquierdo, el del medio o el derecho. El problema es que si no es ninguno de ellos, retornas NULL y no estas caminando por dentro del arbol.

lo he arreglado y lo he solucionado, pongo a disposicion el codigo del método TreeContains().

saludos
Cronos

Código:
TreeNode* SkillTree::treeContains( TreeNode *root, char* parentName ) {	
     if (root==NULL) {
        return NULL;
    }
	 if ( strcmp(parentName, root->item->getName())==0 ) {     
        return root;
    }
	 if ( root->left!=NULL ) 
	{
        TreeNode * aux= treeContains( root->left, parentName );
        if(aux!=NULL)
            return aux;
    }
	 if (root->middle !=NULL )  {
		 TreeNode * aux= treeContains( root->middle, parentName );
		
		if(aux!=NULL)
            return aux;
    }
	 if (root->right!=NULL ) {
        TreeNode * aux= treeContains( root->right, parentName );
        
        if(aux!=NULL)
            return aux;         
    }
	return NULL;
}