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(), "");

}