UniLecs #Task. Serialize and Deserialize BST

Albert Davletov
UniLecs
Published in
Nov 2, 2020

Задача: необходимо разработать алгоритм сериализации и десериализации двоичного дерева поиска. То есть ваш алгоритм должен преобразовать исходное двоичное дерево поиска в строку, а эту строку можно обратно десериализовать в исходное двоичное дерево поиска.
Закодированная строка должна быть максимально компактной.

Разбор

Существует множество вариантов для кодировки бинарного дерева в строку. По сути можно воспользоваться любым вариантов обхода дерева: поиск в ширину или обход по уровням, прямой обход, обратный и т.д.
Для сериализации дерева используем любой из этих вариантов, для десериализации используем алгоритм обхода для раскодировки строки.
Ниже я приведу код для обхода дерева по уровням, т.е. поиск в ширину. Для кодировки дерева воспользуемся очередью. Детали реализации смотрите ниже.

Реализация

Serialize BST using level traversal
Deserialize BST using level traversal

Full source code:
https://gist.github.com/unilecs/8f310f80848152b9535988ce420b6dc1

Play this code and test:
https://dotnetfiddle.net/QiwRL8

--

--