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