2013-02-28 81 views
1

如何檢查元素是否在二叉樹中?例如,序言 - 檢查元素是否是二叉樹的成員

tree1(node(10,empty, node(100,empty, empty))). 
tree2(node(~, node(+, empty, node(*, empty, empty)), node(!, node(/,empty, empty),empty))). 
badTree(node(3, node(5, empty), empty)) . 

?- tree2(T), memberT(!,T). 
T = node(~, node(+, empty, node(*, empty, empty)), node(!, node(/, empty, empty), empty)) . 
?- tree1(T),memberT(100,T). 
T = node(10, empty, node(100, empty, empty)) . 

回答

1

不知道如果這正是你的問題,但這裏是產生你給(假設他們是爲了成爲一個規範)結果代碼:

memberT(Val, node(Val, _Left, _Right)). 
memberT(Val, node(_Val1, Left, _Right)) :- memberT(Val, Left). 
memberT(Val, node(_Val1, _Left, Right)) :- memberT(Val, Right).