![]() |
|
![]() ![]() ![]() |
|
ImSassy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 15.9.2009 Репутация: нет Всего: нет |
Ребят, помогите, пожалуйста, с задачей по Лиспу:
реализовать алгоритм сортировки вставками в бинарном дереве (без сбалансировки) Что-то у меня вобще никак лисп не идёт(((( Буду очень благодарна |
|||
|
||||
VH_ |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 182 Регистрация: 31.10.2006 Репутация: 10 Всего: 11 |
Для «обыкновенного» списка сортировка вставками выглядит, вероятно, так:
Как устроено Ваше бинарное дерево? Это сообщение отредактировал(а) VH_ - 23.9.2009, 07:32 |
|||
|
||||
ImSassy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 15.9.2009 Репутация: нет Всего: нет |
Это лаба, и, впринципе, о каких-то усобых условиях для дерева ничего не оговаривается... Спасибо за помощь)))
|
|||
|
||||
VH_ |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 182 Регистрация: 31.10.2006 Репутация: 10 Всего: 11 |
Вы можете словесно изложить алгоритм "сортировки вставками" именно "в бинарном дереве" (либо дать ссылку на такое описание)?
|
|||
|
||||
ImSassy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 15.9.2009 Репутация: нет Всего: нет |
Так вот в том-то и дело, что гугл даже в теории такого не знает, я уточню в универе и отпишу, а то понятно только то, что ничего не понятно
|
|||
|
||||
ImSassy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 15.9.2009 Репутация: нет Всего: нет |
В общем, вводим список, а потом по нему проходим - на каждом шаге элемент вставляем в дерево, начиная с корня, дальше - если следующий элемент больше, чем элемент в корне, идём на правую ветку, иначе - в левую, и так до листа, а тудо вставляем данный элемент. И дальше нужно вывести уже отсортированный список через отдельную функцию
|
|||
|
||||
lonli |
|
||||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 31.3.2007 Где: Москва Репутация: нет Всего: нет |
Если ещё актуально, могу сходу набросать структуру дерева и функцию вставки.
Структура такая: каждый "элемент" (я не знаком с терминологией) - cons-ячейка, где car часть - собственно значение. cdr часть cons-ячейка, гда car содержит левую, а cdr правую ветки, если веток нет, то соотв. части равны nil.
Для первого элемента сортируемого списка корень дерева создаём вручную.
Правильность работы не проверял. P.S. (cons foo nil) эквивалентно (list foo), но так как мы рассматриваем tree не как вложенный список, для понятности я писал cons. PPS есть более "красивый" вариант в функциональной парадигме (без setf, каждый раз insert-foo создаёт новую ячейку), но он гораздо менее понятен. Это сообщение отредактировал(а) lonli - 26.9.2009, 11:43 |
||||
|
|||||
VH_ |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 182 Регистрация: 31.10.2006 Репутация: 10 Всего: 11 |
Разве это может быть «гораздо менее понятно»? |
||||
|
|||||
VH_ |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 182 Регистрация: 31.10.2006 Репутация: 10 Всего: 11 |
Развертывание дерева в линейный список:
|
|||
|
||||
ImSassy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 15.9.2009 Репутация: нет Всего: нет |
Спасибо Вам огромное за помощь)
|
|||
|
||||
![]() ![]() ![]() |
Правила форума LISP | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | LISP | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |