Witam!
Mam za zadanie zrobić z listy drzewo binarne, tak aby przydzielić gałęziom kody odpowiednio 0 , 1.
Wczytuje z pliku dane do listy, lista jest sortowana rosnąco, poradziłem sobie z tym, że lista zostaje 'Zwinięta' do korzenia...
Chciałbym teraz zacząć podróżować po tym drzewie lecz nie jestem pewien jak i czy dobrze to zrobiłem.
Wydaje mi się, że nie 'przechowuje' ? starych wskaźników?
Proszę o pomoc i sprawdzenie!
void stworzDrzewo(string nazwaWe, list<modelSort> &lista, ofstream &wskZamknij)
{
list<modelSort>::iterator i = lista.end();
int zmniejszSymbol = -1;
if(lista.size() < 1)
{
cout << "Lista jest pusta!";
}
while(lista.size() > 1) //ZWIJAJ LISTE DO OJCA
{
list<modelSort>::reverse_iterator pierwszy = lista.rbegin();
list<modelSort>::reverse_iterator drugi = pierwszy;
++drugi;
modelSort* rodzic = new modelSort;
rodzic->czestosc = pierwszy->czestosc + drugi->czestosc;
rodzic->iloscWystapien = pierwszy->iloscWystapien + drugi->iloscWystapien;
rodzic->potomekLewy = &*pierwszy;
rodzic->potomekPrawy = &*drugi;
rodzic->slowoKodowe = zmniejszSymbol--;
lista.pop_back();
lista.pop_back();
lista.push_front(*rodzic);
lista.sort(porownaj);
}
drukujListe(lista);
//drukujTabele(&*lista.begin(), "");
}