Witam.
Piszę program który będzie kodował tekst metodą huffmana. Większość programu już mi działa jednak mam problem przy przechodzeniu drzewa binarnego. Tak wygląda fragment kodu odpowiadający z przechodzenie po drzewie, i spisywanie odpowiednich wartości:
while(kod != NULL)
{
if(kod->left == NULL && kod->right == NULL)
{
if(kod->znak < NUM_CHARS)
{
tab_kod[kod->znak] = "0";
free(kod);
kod = NULL;
}
else
{
free(kod);
kod = NULL;
}
}
else
{
char str[NUM_CHARS];
ga_drzewa *zam = kod;
int p = 0;
while(zam->left != NULL || zam->right != NULL)
{
if(zam->left != NULL)
{
zam = zam->left;
str[p] = '0';
}
else if(zam->right != NULL)
{
zam = zam->right;
str[p] = '1';
}
p++;
}
if(zam->znak < NUM_CHARS)
{
tab_kod[zam->znak] = str;
free(zam);
zam = NULL;
}
else
{
free(zam);
zam = NULL;
}
}
}
Przechodząc program krok po kroku doszedłem, że błąd powoduje zwalnianie pamięci. Proszę o radę co zrobić.
P.S.
Struktura drzewa wygląda następująco:
typedef struct drzewo
{
int znak;
struct drzewo *right, *left;
} ga_drzewa;
Proszę o szybką pomoc, problem zbyt trudny dla doświadczonego programisty pewnie nie jest.