假設我有以下形式的自定義數據類型樹:檢索二叉樹的元素在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