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