Gère les textes d'entrée n'ayant qu'un seul type de caractère
This commit is contained in:
parent
e915bd3080
commit
5af178a01d
|
@ -101,6 +101,24 @@ HufTree createTree(bytecount* counts) {
|
|||
// Cas particulier : aucun caractère dans le fichier, dans ce
|
||||
// cas l'arbre est l'arbre vide
|
||||
tree = NULL;
|
||||
} else if (leaves_count == 1) {
|
||||
// Cas particulier : un seul type de caractère dans le fichier,
|
||||
// dans ce cas on crée un noeud artificiel et une racine. Sans
|
||||
// cette opération, on aurait un arbre avec un unique sommet et
|
||||
// donc une étiquette vide
|
||||
HufTree child_l = remaining[0];
|
||||
HufTree child_r = malloc(sizeof(*child_r));
|
||||
tree = malloc(sizeof(*tree));
|
||||
|
||||
tree->value = -1;
|
||||
tree->count = -1;
|
||||
tree->child_l = child_l;
|
||||
tree->child_r = child_r;
|
||||
|
||||
child_r->value = -1;
|
||||
child_r->count = -1;
|
||||
child_r->child_l = NULL;
|
||||
child_r->child_r = NULL;
|
||||
} else {
|
||||
// Sinon, la racine de l'arbre est le dernier sommet encore
|
||||
// dans le tableau `remaining`
|
||||
|
@ -245,7 +263,9 @@ void _labelVertex(HufVertex vertex, char** labels, char* label, size_t length) {
|
|||
} else {
|
||||
// Si le sommet est une feuille, étiquetage du caractère
|
||||
// associé avec l'étiquette passée en paramètre. Fin de la récursion
|
||||
labels[vertex.value] = label;
|
||||
if (vertex.value != -1) {
|
||||
labels[vertex.value] = label;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue