假设我有以下形式的自定义数据类型树:检索二叉树的元素在Haskell
data BalTree a = Leaf | Node Integer (BalTree a) a (BalTree a) deriving (Eq, Show, Read)
和创建大小为10的新的树,我会得到这样的:
Node 10 (Node 5 (Node 2 (Node 1 Leaf 'Z' Leaf) 'Z' Leaf)
'Z'
(Node 2 (Node 1 Leaf 'Z' Leaf) 'Z' Leaf))
'Z'
(Node 4 (Node 2 (Node 1 Leaf 'Z' Leaf) 'Z' Leaf)
'Z'
(Node 1 Leaf 'Z' Leaf))
如何在给定索引时检索按顺序横向的元素?
我尝试:
ind Leaf pos = Nothing
ind [email protected](Node n lt x rt) pos
| pos < 0 = Nothing
| pos > treeSize-1 = Nothing
| pos < hTreeSize = ind lt pos
| pos == hTreeSize = Just x
| pos > hTreeSize = ind rt (pos - hTreeSize)
where treeSize = size tree
hTreeSize = treeSize `div` 2
我不能完全肯定这是否是按顺序横向和它不会返回正确的结果。
你的尝试有什么问题? – dave4420 2013-03-27 19:29:38
btw,Haskell中的具体类型名称(与变量相对)必须大写。所以'BalTree'不是'balTree'。 – luqui 2013-03-27 19:53:37
Sorrry guys!我试图检索给定索引而不是第一个元素的元素。戴夫:我有一种感觉,我根本没有按顺序横穿,它没有返回正确的结果。 luqui:对不起,这是一个错字。 – rlhh 2013-03-27 19:58:50