Haskell: Получить путь от каждого конечного узла до корня в древовидной структуре Bin - PullRequest
0 голосов
/ 10 ноября 2011

У меня есть работа, но я не знаю, как это сделать.У меня есть Bin-дерево

    1
   /  \
  2    3
 / \  / \
4  5  6  7

И мне нужно найти путь от корня к узлу с координатами [i, j].Например: (2, 2) -> [1, 3, 6]

fromRoot :: Int -> Int -> Tree a -> [a]

Я написал некоторую функцию для Index и BinTree, но как сделать функцию main я не знаю.

data Tree a = Node (Tree a) a (Tree a)

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


border :: Int -> Int
border 0 = 0
border 1 = 0
border l = 2*(border (l-1))+1

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

1 Ответ

2 голосов
/ 10 ноября 2011

Поскольку это домашнее задание, я не дам полного решения, но некоторые подсказки:

  • как вы представляете пустое дерево с вашим типом дерева?
  • как вы представляете дерево примеров (или любое другое конечное дерево)?

Учитывая основную функцию: она не обязательно нужна, хороший способ запустить - запустить

ghci your_source_file.hs

Затем вы можете оценить части вашей программы, например ::

fromRoot 2 3 t1 -- if you have a t1 is a tree

Кроме того, вы можете написать основную функцию, подобную этой:

test_tree = ...   -- you need to fill in the dots (see questions above)

main :: IO ()
main = do print (fromRoot 2 2 test_tree)

Если вам нужно найти документацию, используйте http://haskell.org/hoogle/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...