| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Бинарное дерево |
| Автор: toxa007 15.12.2005, 22:42 |
| Дано любое бинарное дерево. Как его сделать равновесным? Равновесное это когда для любого узла высота левого и правого поддерева отличается не более чем на единицу. |
| Автор: Fedor 15.12.2005, 23:54 | ||
ИМХО, попробуй так: идешь снизу вверх по дереву. Для каждой вершины смотришь, является ли она равновесной. Если нет, смещаешь его влево или вправо на столько, сколько нужно. |
| Автор: toxa007 17.12.2005, 09:59 |
| Может ещё другие советы будут? |
| Автор: sergejzr 17.12.2005, 11:19 |
| Поищи материалы по красно чёрному дерево (red-black tree). B - Tree также у равновешен. Прикол не только в том, что у него поддеревья одинаковой длинны, но и сама высота минимальна (максимальное количество поддеревьев у каждого узла) |