Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2011, 18:34   #1
Fill_x
Новичок
Джуниор
 
Регистрация: 10.11.2011
Сообщений: 1
По умолчанию Haskell поиск пути от корня бинарного дерева до узла [x,y]

Собственно сабж.
Есть бинарное дерево

Код:
    1
   /  \
  2    3
 / \  / \
4  5  6  7
Нужно написать функцию, которая бы показывала путь от корня дерева до узла с координатами, передоваемыми в функцию.
Например (2,2) -> [1 3 6] или что-то такое...
Код:
fromRoot :: Int -> Int -> Tree a -> [a]
С горем пополам получилось сделать функцию индекса и само дерево, а как реализовать поиск пути я вообще без понятия.
Код:
data Tree a = Node (Tree a) a (Tree a)

-- функция выдает значение узла
-- Аргумент 1: иследуемое дерево
-- Аргумент 2: уровень
-- Аргумент 3: номер узла
-- Результат: значение узла
index :: Tree a -> Int -> Int -> a

index (Node _ x _ ) 0 _ = x
index (Node l x r) i j  | ((border i)<j) = index r (i-1) (j-(border i)-1)       
                        | otherwise = index l (i-1) j

-- функция строит бинарное дерево записывая в узлы натуральные числа от n до ...
-- Аргумент 2: значение заносимое в вершину узла
-- Результат: бинарное дерево с простыми числами в узлах

myBuild :: Int  -> Tree Int
myBuild n = (Node (myBuild (n*2)) n (myBuild (n*2+1)))

-- функция выдает номер граничного узла
-- Аргумент 1: иследуемый уровень
-- Результат: номер граничного узла
border :: Int -> Int
border 0 = 0
border 1 = 0
border l = 2*(border (l-1))+1


fromRoot :: Int -> Int -> Tree a -> [a]
.......
Fill_x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обход бинарного дерева CodeNOT Общие вопросы C/C++ 3 20.05.2011 07:55
Удаление узла из красно-черного дерева CodeNOT Общие вопросы C/C++ 0 18.05.2011 07:15
Создания бинарного дерева С++ Olya90 Помощь студентам 0 10.06.2009 18:58