Mam niezrownowazone drzewo binarne, chcialbym korzystac z niego, ale juz po zamknieciu programu wiec musze zapisac go do pliku. Jak to zrobic, zeby zapis byl jednoznaczny? Jak potem zbudowac takie drzewo na podstawie tych informacji zawartych w pliku? z gory dziekuje za pomoc
Nie znam sie na drzewach binarnych.. ale może przy użyciu XML? albo jakaś tablica z rekordami ;P
Możesz sobie założyć, że pierwsze 4 bajty w pliku to offset początku rekordu korzenia drzewa w pliku. Każdy rekord posiada offset startu w pliku rekordu prawego dziecka i lewego dziecka (0 może oznaczać brak). Rekordy zawsze dopisujesz na końcu pliku i podczas działania programu nigdy ich nie kasujesz. Jeżeli wartościami węzłów nie są dane o stałej długości można zapisać także długość bloku danych. Jeżeli posiadasz takie informacje, to przechodzenie drzewa w pliku metodą preorder powinno zbudować odpowiednią strukturę w pamięci.
Wydaje mi się, że takie coś powinno zadziałać.
Rekurencja + serializacja. Każdy węzeł ma np. funkcję save ze strumieniem jako parametr. Zapisuje w niej własne dane i info o tym czy posiada poddrzewa. Dalej funkcja ta zapisuje lewy węzeł (funkcją save) i prawy. Analogicznie wygląda odczyt.