我有工作要做,但我不知道怎么做。 我有Bin树
1
/ \
2 3
/ \ / \
4 5 6 7
我需要通过coord [i,j]找到从root到Node的方式。 例如:(2,2) - > [1,3,6]
fromRoot :: Int -> Int -> Tree a -> [a]
我为Index和BinTree编写了一些函数,但是如何创建主函数我不知道。
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)))
答案 0 :(得分:2)
由于这是作业,我不会提供完整的解决方案,但有一些提示:
考虑主要功能:你不一定需要一个,一个好的开始方式就是运行
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/