Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Бинарное дерево


Автор: toxa007 15.12.2005, 22:42
Дано любое бинарное дерево. Как его сделать равновесным? Равновесное это когда для любого узла высота левого и правого поддерева отличается не более чем на единицу.

Автор: Fedor 15.12.2005, 23:54
Цитата(toxa007 @ 15.12.2005, 22:42)
Дано любое бинарное дерево. Как его сделать равновесным? Равновесное это когда для любого узла высота левого и правого поддерева отличается не более чем на единицу.

ИМХО, попробуй так: идешь снизу вверх по дереву. Для каждой вершины смотришь, является ли она равновесной. Если нет, смещаешь его влево или вправо на столько, сколько нужно.

Автор: toxa007 17.12.2005, 09:59
Может ещё другие советы будут?

Автор: sergejzr 17.12.2005, 11:19
Поищи материалы по красно чёрному дерево (red-black tree). B - Tree также у равновешен. Прикол не только в том, что у него поддеревья одинаковой длинны, но и сама высота минимальна (максимальное количество поддеревьев у каждого узла)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)