Я реализую двоичное дерево поиска в C++ 11. Я хочу добавить функцию, которая позволяет отмечать разные версии структуры данных с постоянной временной сложностью.Способ копирования и хранения всех записей в сбалансированном двоичном дереве поиска с помощью O (1)
Что я думал о добавлении другого свойства в корневой узел под названием «имя», «ключ» или «отметка» - таким образом, доступ к O (1). Но, чтобы сохранить версию дерева я бы
- создать копию корня (я думал о создании нового экземпляра двоичного дерева поиска и просто присвоить дерево, я хочу, чтобы скопировать этот новый экземпляр)
- хранить скопированный корень в массиве
достаточно, если эти сохраненные корни для чтения доступ только. Но теперь мой вопрос: могу ли я выполнить эти 2 шага без добавления временной сложности?
Ниже представлен небольшой эскиз, иллюстрирующий процесс.
Большое спасибо за вашу помощь.
FunkyPeanut
Я не слежу за этим. Если вы создаете новую версию дерева, зачем вам копировать все корни старых версий? Можете ли вы добавить диаграмму или что-то еще, показывая, каковы ваши намерения? –
Эй. Я добавил немного эскиза. Я надеюсь, что это помогает! – FunkyPeanut
Ahh Я понимаю, что вы имеете в виду. Я не хотел писать «каждый корень» ... Я думаю, что я хотел сказать «корень каждого дерева, которое вы хотите скопировать». Я исправлю проблему. Сожалею. – FunkyPeanut