Ja nie mogę, przez dobre pięć minut zastanawiałem się, co to jest ten "wezel". :) "Nigdy nie słyszałem o żadnym wezelu, o co chodzi...?" Gdybyś pisał identyfikatory po angielsku, byłoby odrobinę wygodniej.
Zaznaczam, że nie analizowałem całości kodu. Tam, gdzie są wskaźniki, należy spodziewać się niespodziewanego, tak więc nie zdziwiłbym się, gdyby błędów było więcej.
Co do warningów jednak da się coś poradzić. Zacznij od deklaracji zapowiadającej funkcję correct_tree. Język C jest paskudny, jeśli chodzi o niezadeklarowane funkcje - jeśli mu coś nie pasuje z argumentem lub zrobi się literówkę (lub użyje funkcji, która nie została jeszcze zdefiniowana, a nie jest zapowiedziana) - kompilator sobie wyczarowuje pasującą mu funkcję z powietrza, która działa w sposób nieprzewidziany.