J'ai donc trouvé quelques exemples d'arbres en ligne et je les ai dégotés pour les essayer pour aider un jeu dans lequel je travaillerai qui contiendra un arbre de tous les mots du dictionnaire. L'exemple que j'ai trouvé en ligne n'a pas eu de mise en œuvre d'un freeTree pour éviter les fuites de mémoire, donc j'essaie de faire mon propre. Cependant, je n'ai pas travaillé avec c depuis un moment et je rencontre des problèmes.Libérer un trie tree
char keys[][8] = {"the", "a", "there", "answer", "any",
"by", "bye", "their"};
char output[][32] = {"Not present in trie", "Present in trie"};
struct TrieNode *root = getNode();
// Construct trie
int i;
for (i = 0; i < ARRAY_SIZE(keys); i++){
insert(root, keys[i]);
}
// Search for different keys
printf("%s --- %s\n", "the", output[search(root, "the")]);
printf("%s --- %s\n", "these", output[search(root, "these")]);
printf("%s --- %s\n", "their", output[search(root, "their")]);
printf("%s --- %s\n", "thaw", output[search(root, "thaw")]);
freeTree(root);
printf("test after free\n");
printf("%s --- %s\n", "the", output[search(root, "the")]);
printf("%s --- %s\n", "these", output[search(root, "these")]);
printf("%s --- %s\n", "their", output[search(root, "their")]);
printf("%s --- %s\n", "thaw", output[search(root, "thaw")]);
ceci est un test im simple fonctionnement et les résultats après la libre sont les mêmes qu'avant
the --- Present in trie
these --- Not present in trie
their --- Present in trie
thaw --- Not present in trie
test after free
the --- Present in trie
these --- Not present in trie
their --- Present in trie
thaw --- Not present in trie
est ici la structure im en utilisant
struct TrieNode
{
struct TrieNode *children[ALPHABET_SIZE];
bool isLeaf;
};
et la mise en œuvre sans
void freeChildren(struct TrieNode *node){
int i;
if (node->isLeaf == false){
for (i=0;i<ALPHABET_SIZE;i++){
if (node->children[i] != NULL){
freeChildren(node->children[i]);
}
}
}
if (node != NULL){
node = NULL;
free(node);
}
}
void freeTree(struct TrieNode *root){
freeChildren(root);
free(root);
}
WH fr je crée un nouveau nœud de l'arbre, j'ai la mémoire pour cela, donc je sais que j'ai besoin de libérer.
Merci pour la réponse fonctionne maintenant! Les commentaires étaient très clairs et informatifs merci! – user3267256