Форум программистов, компьютерный форум, киберфорум
Haskell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 12

Определите тип данных, представляющий бинарные деревья поиска

29.01.2014, 00:16. Показов 3557. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Очень глупая ситуация, задание:
Функции работы с бинарными деревьями поиска. Определите тип
данных, представляющий бинарные деревья поиска. В отличие от
деревьев, представленных в методических указаниях, в деревьях
поиска данные могут находиться не только в листьях, но и в проме-жуточных узлах дерева. Будем использовать деревья для представления ассоциативного массива, сопоставляющие значения ключей
(представляемых как строки) целым числам. Для каждого узла с
некоторым ключом в левом поддереве должны содержаться элемен-ты с меньшими значениями ключа, а в правом — с б ´ ольшими. При
поиске соответствия между строкой и числом необходимо учитывать эту информацию, поскольку она позволяет более эффективно
извлекать информацию из дерева. Определите описанный тип данных и следующие функции:
1) add, добавляющую в дерево заданную пару ключа и значения.
2) find, возвращающую число, соответствующее заданной строке.
3) exists, проверяющую, что элемент с заданным ключом со-держится в дереве.
4) toList, преобразующая заданное дерево поиска в список,
упорядоченный по значениям ключей.

Программу с горем пополам написала и с помощью:
Haskell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import Data.Maybe
 
data STree = Tip | Bin (String, Int) STree STree deriving Show
 
add (k, v) Tip = Bin (k, v) Tip Tip
add (k, v)(Bin (k1, v1) l r) = 
  if k > k1 then Bin (k1, v1) l (add (k, v) r) 
  else Bin (k1, v1) (add (k, v) l) r
 
find k Tip = Nothing 
find k (Bin (k1, v1) l r) 
  | k == k1 = Just v1
  | otherwise = find k (if k > k1 then r else l)
 
exist k = isJust . find k
 
toList Tip = []
toList( Bin (_, v1) l r) = concat [toList l, [v1], toList r]
но у меня нет получается ввести значения в main для каждой функции,я просто не знаю как и на то что пробую- программа ругается
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.01.2014, 00:16
Ответы с готовыми решениями:

Определите тип, представляющий геометрические фигуры на плоскости
Фигура может быть либо окружностью (характеризуется координатами центра и радиусом), прямоугольником (характериуется координатами верхнего...

Бинарные деревья поиска
Доброй ночи, помогите пожалуйста разобраться в коде, я его нашел в интернете: class Tree<T> where T: IComparable { ...

Бинарные деревья поиска
Здравствуйте. Помогите решить задачу. Написать функцию, которая удаляет из бинарного дерева поиска T вершины с максимальным и минимальным...

4
 Аватар для calabi-yau
78 / 64 / 5
Регистрация: 25.03.2012
Сообщений: 71
29.01.2014, 01:04
Цитата Сообщение от Faetessa Посмотреть сообщение
но у меня нет получается ввести значения в main для каждой функции,я просто не знаю как и на то что пробую- программа ругается
Haskell
1
2
3
4
5
main = do
  print $ find  "zero" t
  print $ exist "four" t
  print $ toList t
  where t = add ("one", 1) $ add ("zero", 0) Tip
1
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 12
29.01.2014, 01:37  [ТС]
Haskell
1
2
3
4
5
6
*Main> = do
  print $ find  "zero" t
  print $ exist "four" t
  print $ toList t
  where t = add ("one", 1) $ add ("zero", 0) Tip
<interactive>:10:1: parse error on input `='
ругается опять(
0
 Аватар для calabi-yau
78 / 64 / 5
Регистрация: 25.03.2012
Сообщений: 71
29.01.2014, 01:56
Лучший ответ Сообщение было отмечено Faetessa как решение

Решение

Цитата Сообщение от Faetessa Посмотреть сообщение
*Main>
Ясно. Тогда так:
Haskell
1
2
3
4
5
6
7
8
9
*Main> let t = add ("one", 1) $ add ("zero", 0) Tip
*Main> 
*Main> print $ find  "zero" t
Just 0
*Main> print $ exist "four" t
False
*Main> print $ toList t
[1,0]
*Main>
1
0 / 0 / 0
Регистрация: 22.05.2013
Сообщений: 12
29.01.2014, 19:05  [ТС]
Спасибо огромное!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.01.2014, 19:05
Помогаю со студенческими работами здесь

Бинарные деревья поиска. Вычислить высоту (Некорректно вычисляется :с )
Код рабочий, но выдает некорректную высоту дерева, где я затупил, уже и понять не могу -.- Помогите пожалуйста, я вас небесными пряниками...

Начертите бинарные деревья поиска высотой 2,3,4,5 и 6 для множества ключей
Помогите пожалуйста написать код по данной задаче и прокомментировать каждое действие, ни как не могу - нормально разобрать данный раздел ....

Распечатать, посчитать среднее арифметическое, преобразовать в дерево поиска [Бинарные деревья]
Дано идеально сбалансированное дерево. Не выводиться дерево:(... Не понимаю как пройтись по элементам. Из за этого не понимаю как...

Бинарные деревья. Вывод потомков для каждого из узлов бинарного дерева поиска
Здравствуйте, уважаемые форумчане! Продолжая изучать бинарные деревья, решил подумать о выгодности использования третьего указателя, а...

Шаблоны (упорядоченные бинарные деревья поиска вещественных чисел, линейных многочленов и двоичных строк)
Добрый вечер всем. Понимаю, что вопрос заезженный, но тем не менее, я вынужден создать тему. Задача - Имеется необходимость работать с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru