[C] garder une référence pour pouvoir free

horny

Elite
Dans le cadre d'un projet je dois coder un arbre binaire pour en faire un dictionnaire
Dans mes fonctions j'ai
removeWord(BST* tree, char* word)
qui me pose des soucis

Je n'arrive pas à garder une référence vers le nœud que je vire de l'arbre pour pouvoir le free ensuite
Je ne garde qu'un seul cas dans le code d'après, pas besoin de tout le code
Si j'arrive à le résoudre j'arriverai à résoudre les autres .. normalement :[]

removeWord(BST* tree, char* word)
{
BST* matchWord = getWord(tree, word); //renvoi un pointeur vers le noeud qui contient le mot
if (matchWord->rightSon == NULL)
{
*tree = *(transplant(tree, matchWord, matchWord->leftSon));
}
free(matchWord); //matchWord pointe vers la nouvelle racine de l'arbre donc pas bon ...
}

BST* transplant(BST* tree, BST* first, BST* second)
{
if (first-> parent == NULL)
{
tree = second; //ici wordMatch devient second aussi et je veux pas
}
return tree;
}

Quelqu'un saurait me dire comment faire ?
 
Haut