Przeszukiwanie drzewa z zapamiętaniem ścieżki

0

Witam. W jaki sposób przeszukać drzewo (wartości są tylko w liściach) tak aby zapisać ścieżkę do znalezionego wierzchołka (o zadanej wartości). Potrzebuję tego do kodowania Huffmana. Chodzi o to, żeby przy przejściu na lewego syna dopisać do ciągu reprezentującego ścieżkę 0 a na prawego 1. Drzewo to struktura:
wezel
int wartosc;
wezel *left
wezel *right

Proszę o odpowiedź, trzeba zaliczyć algorytmy ;p generalnie wiem jak przeszukać drzewo rekurencyjnie ale nie mogę dojść do tego jak zapamiętać ścieżkę :(

0

Buduj ciąg w trakcie wyszukiwania.

0

Ok chyba już wiem co i jak tylko mam mały problem techniczny:
mam napis np

char* kod

i teraz jak przydzielić mu dodatkowy bajt bez zmiany tego napisu?

Czyli np kod = "011" i teraz chcę dodać do niego 1 żeby było "0111". W jaki sposób to zrobić, żeby nie stracić tych znaków które już są wpisane?

0

Czy przypadkiem nie wiesz jakiej wysokości jest drzewo?

albo skorzystaj ze string'a albo:

char *kod; // to nie jest jeszcze napis.
kod=(char*)malloc(1); *kod=0; // dopiero teraz to jest napis, pusty

// dodawanie znaku do napisu.
int len=strlen(kod);
char *tmp=(char*)malloc(len+2);
memcpy(tmp,kod,len);
tmp[len]=NowyZnak;
tmp[++len]=0;
free(kod);
kod=tmp;

1 użytkowników online, w tym zalogowanych: 0, gości: 1