Общее преобразование дерева в двоичное дерево - PullRequest
0 голосов
/ 28 декабря 2010

Какова временная и пространственная сложность преобразования общего дерева в двоичное?!

Спасибо

1 Ответ

0 голосов
/ 28 декабря 2010

Я не знаю, что вы подразумеваете под "общим деревом". В любом случае сложность вставки в сбалансированное двоичное дерево составляет O(log n), где n - количество элементов, находящихся в данный момент в дереве, поэтому построение полного дерева из некоторого списка элементов будет O(n log n), где n - общее количество элементов, которые нужно вставить.

Вам также нужно будет указать время, необходимое для получения предметов из другого дерева. Это время зависит от типа дерева у вас есть. Ради аргумента я предполагаю, что вы можете пройти его за линейное время, поэтому получение данных из существующего дерева O(n).

Это делает вашу общую сложность времени O(n + (n log n)).

Требуется дополнительное пространство n * sizeof(node), где sizeof(node) - размер вашего узла двоичного дерева. Обратите внимание, что если элементы, хранящиеся в узлах «общего дерева», являются указателями, вам не придется оплачивать стоимость копирования реальных объектов - только накладные расходы узла двоичного дерева, который обычно составляет три указателя: данные, левая дочерняя ссылка и правая дочерняя ссылка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...