我想找到一個STree
的深度,但在我的代碼中它不會計算第一級。找到深度的樹haskell
data STree = SNode Label [STree] deriving (Eq,Show)
tdepth :: STree -> Label
tdepth (SNode _ [])= 0
tdepth (SNode l s) = 1 + naiveSumList([tdepth t | t <- s])
naiveSumList :: [Int] -> Label
naiveSumList (x:xs) = x + (naiveSumList xs)
naiveSumList [] = 0
tdepth SNode _ []
必須給1但我該如何計算水平?下面是STree
的I已經與測試:
s1 = SNode 1 []
s2 = SNode 1 [
SNode 2 [],
SNode 3 []
]
s3 = SNode 1 [
SNode 2 [
SNode 4 [],
SNode 5 [],
SNode 6 []
],
SNode 3 []
]
s4 = SNode 1 [
SNode 2 [
SNode 4 [],
SNode 5 [
SNode 7 []
],
SNode 6 []
],
SNode 3 []
]
我的結果與代碼示例:
tdepth s1 = 0
tdepth s2 = 1
tdepth s3 = 2
tdepth s4 = 3
和結果應該是:
tdepth s1 = 1
tdepth s2 = 2
tdepth s3 = 3
tdepth s4 = 4
請重新填寫你的問題。目前還不清楚,你提到的是哪個代碼,你在問題中有兩個不同的'tdepth'實現。 – 2014-11-24 20:12:16
好吧,我刪除了另一個 – Mert 2014-11-24 20:16:24
如果你想找到你的樹的深度,爲什麼你總結每個子分支的深度?你不應該拿這個名單中的「最大」嗎?另外,爲什麼''sum'在'Prelude'中已經存在時使用'naiveSumList'? – bheklilr 2014-11-24 20:19:39