2013-12-15 28 views
0

在這個def中subTree函數的工作原理是什麼? 我有點困惑。 現在如果Tree中的節點包含String「s」,則可以將帶有String「s」的葉節點視爲子樹。如何定義一個子樹metod

data Tree = Leaf String | Node Tree String Tree 

subTree :: Tree -> Tree -> Bool 
subTree (Leaf s) t = inTree s t 
subTree (Node t1 s1 t2) (Leaf s2) = False 
subTree (Node t1 s1 t2) (Node t3 s2 t4) = 
    ((s1 == s2) && (subTree t1 t3) && (subTree t2 t4)) || 
    subTree (Node t1 s1 t2) t3 || 
    subTree (Node t1 s1 t2) t4 

inTree :: String -> Tree -> Bool 
inTree s1 (Leaf s2) = (s1 == s2) 
inTree s1 (Node t1 s2 t2) = (s1 == s2) || inTree s1 t1 || inTree s1 t2 
+0

有沒有人瞭解我的問題?這似乎是混亂。 這是導致混淆的線 inTree s1(節點t1 s2 t2)=(s1 == s2)|| inTree s1 t1 || inTree s1 t2 – user2975699

回答

1
*Main> subTree (Leaf 1) (Node (Leaf 0) 1 (Leaf 9)) 
True 
*Main> subTree (Leaf 1) (Node (Leaf 1) 4 (Leaf 9)) 
True 
*Main> subTree (Leaf 1) (Node (Leaf 0) 4 (Leaf 9)) 
False 
*Main> 

我改變字符串到整數

這是正確的,根據樹的Def?

+0

我認爲這是你問題的一部分,並不是真正的答案。有答案意味着人們不太可能自己添加一個答案。也許你想編輯你的問題並刪除答案? –

相關問題