UniLecs #Task. Serialize and Deserialize BST
Задача: необходимо разработать алгоритм сериализации и десериализации двоичного дерева поиска. То есть ваш алгоритм должен преобразовать исходное двоичное дерево поиска в строку, а эту строку можно обратно десериализовать в исходное двоичное дерево поиска.
Закодированная строка должна быть максимально компактной.
Разбор
Существует множество вариантов для кодировки бинарного дерева в строку. По сути можно воспользоваться любым вариантов обхода дерева: поиск в ширину или обход по уровням, прямой обход, обратный и т.д.
Для сериализации дерева используем любой из этих вариантов, для десериализации используем алгоритм обхода для раскодировки строки.
Ниже я приведу код для обхода дерева по уровням, т.е. поиск в ширину. Для кодировки дерева воспользуемся очередью. Детали реализации смотрите ниже.
Реализация
Full source code:
https://gist.github.com/unilecs/8f310f80848152b9535988ce420b6dc1
Play this code and test:
https://dotnetfiddle.net/QiwRL8