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

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

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

Author24 — интернет-сервис помощи студентам
Очень глупая ситуация, задание:
Функции работы с бинарными деревьями поиска. Определите тип
данных, представляющий бинарные деревья поиска. В отличие от
деревьев, представленных в методических указаниях, в деревьях
поиска данные могут находиться не только в листьях, но и в проме-жуточных узлах дерева. Будем использовать деревья для представления ассоциативного массива, сопоставляющие значения ключей
(представляемых как строки) целым числам. Для каждого узла с
некоторым ключом в левом поддереве должны содержаться элемен-ты с меньшими значениями ключа, а в правом — с б ´ ольшими. При
поиске соответствия между строкой и числом необходимо учитывать эту информацию, поскольку она позволяет более эффективно
извлекать информацию из дерева. Определите описанный тип данных и следующие функции:
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)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.01.2014, 00:16
Ответы с готовыми решениями:

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

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

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

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

4
78 / 64 / 5
Регистрация: 25.03.2012
Сообщений: 71
29.01.2014, 01:04 2
Цитата Сообщение от 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  [ТС] 3
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
78 / 64 / 5
Регистрация: 25.03.2012
Сообщений: 71
29.01.2014, 01:56 4
Лучший ответ Сообщение было отмечено 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  [ТС] 5
Спасибо огромное!!!
0
29.01.2014, 19:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.01.2014, 19:05
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru