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

Как написать функцию переворота бинарного дерева?

20.05.2014, 19:21. Показов 2231. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть задание :
Напишите функцию reverse :: BinTree a -> BinTree a , которая переворачивает дерево. Она меняет
местами два элемента в узле дерева.
BinTree реализован так:
Haskell
1
2
data BinTree a= List a |BinTree (BinTree a,  BinTree a)
    deriving (Show, Eq, Ord)
можно ли используя его написать эту функцию?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.05.2014, 19:21
Ответы с готовыми решениями:

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

Написать функцию копирования бинарного дерева и вывода его на экран
Tree34°. Дан указатель P1 на корень непустого дерева. Создать копию данного дерева и вывести указатель P2 на корень созданной копии. ...

Написать функцию переворота строки
не пайму, чего-то. вот есть страка, хачу перевирнуть, а ана не перевараичвается. остоётся старай. вот мой кот: #include...

2
 Аватар для Araneo
650 / 260 / 16
Регистрация: 02.03.2014
Сообщений: 587
20.05.2014, 19:31
Лучший ответ Сообщение было отмечено gyok как решение

Решение

Вот такой вариант.
Haskell
1
2
3
4
5
6
7
8
{-# Language LambdaCase#-}
data BinTree a= List a |BinTree (BinTree a,  BinTree a)
  deriving (Show, Eq, Ord)
 
reverseBinTree :: BinTree a -> BinTree a
reverseBinTree = \case
  BinTree (l,r) -> BinTree (reverseBinTree r, reverseBinTree l)
  t             -> t
Добавлено через 2 минуты
Более цивилизованный вариант.
Haskell
1
2
3
reverseBinTree :: BinTree a -> BinTree a
reverseBinTree (BinTree (l,r)) = BinTree (reverseBinTree r, reverseBinTree l)
reverseBinTree t               = t
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38162 / 21097 / 4306
Регистрация: 12.02.2012
Сообщений: 34,685
Записей в блоге: 14
20.05.2014, 19:35
Лучший ответ Сообщение было отмечено gyok как решение

Решение

Haskell
1
2
3
4
5
6
7
8
data BinTree a = Nil | Node a (BinTree a) (BinTree a)  deriving (Eq, Show)  
 
revTree Nil = Nil
revTree (Node x y z) = (Node x (revTree z) (revTree y))
 
*Main> revTree (Node 5 (Node 4 Nil Nil) (Node 6 Nil Nil))
Node 5 (Node 6 Nil Nil) (Node 4 Nil Nil)
(0.00 secs, 0 bytes)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.05.2014, 19:35
Помогаю со студенческими работами здесь

Написать шаблон бинарного дерева с функцией распечатки дерева
Не понимаю, что от меня хотят. Дано такое задание: Написать шаблон бинарного дерева с функцией распечатки дерева *(+(d,e),c) в виде...

Написать сортировку бинарного дерева
Как записать функцию, которая сортирует элементы бинарного дерева по возрастанию?Подскажите пожалуйста

Определить функцию для вычисления глубины бинарного дерева
Здравствуйте, помогите пожалуйста с написанием программы на F# (visual studio 2010): Определить функцию для вычисления глубины бинарного...

Определить функцию для вычисления глубины бинарного дерева
Вообщем вот такая задачка: Определить функцию для вычисления глубины бинарного дерева (глубина пустого дерева равна 0, глубина...

Определить функцию для вычисления глубины бинарного дерева
Дано S-выражение, представляющее дерево вида «(РебенокЛевый Родитель РебенокПравый)». Определить функцию для вычисления глубины этого...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru