2016-05-15 6 views
-4

Кто-нибудь знает, как сделать алгоритм, который преобразует дерево двоичного поиска в дерево AVL, и да преобразует его, а не создает другое дерево (так что это будет сделано только с помощью поворота), а не с технологией DSW ... и в C. Сложная часть здесь состоит в том, что существует множество случаев, поскольку двоичное дерево поиска может быть несбалансированным различными способами и существует 4 типа вращений.Двоичное дерево поиска? Алгоритм

+2

После выполнения домашней работы, должен ли я гладить вашего мастера рубашки? –

+0

Ну, так как вы используете C, вы можете сбросить дерево, оставив только свой корень и повторно использовать его в качестве результата вместо того, чтобы создавать новый указатель на новое дерево. Возможное решение состоит в том, чтобы временно сохранить все значения дерева (используя любой способ), очистить дерево, а затем добавить элементы, используя любой метод автоматической балансировки, который вы хотите. На самом деле это похоже на DSW. :) –

+0

@androiddeveloper true –

ответ

1

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

Смежные вопросы