Если вы действительно хотите сделать что-то подобное, вы можете просто назначить каждому узлу идентификатор и сохранить узлы в этом формате:
[значение id-узла left-node-id right-node-id]
, а затем посетите дерево с поиском в ширину.
Когда вы хотите восстановить дерево, создайте идентификатор карты-> узел и затем прочитайте назад файл: так, когда вы читаете запись, создаете узел, регистрируете его на карте и назначаете левый и правый узел, извлекающий узлы из карты.