我想找到二叉樹的最深元素,到目前爲止,代碼只適用於空樹或高度爲一。序言,二叉樹
這裏是代碼 我的身高功能正常工作。
deepest(node(L,X,R),X):- height(L,0),height(R,0).
deepest(node(L,_,R),X):- height(L,D1),height(R,D2), D1 > D2, deepest(L,X).
deepest(node(L,_,R),X):- height(L,D1),height(R,D2), D1 =< D2, deepest(R,X).
編輯:例如
?- deepest(node(node(node(leaf,8,leaf),20,leaf),
30,
node(node(leaf,88,leaf),33,node(leaf,888,leaf))),
X).
X = 8 ;
X = 88 ;
X = 888 ;
false.
你可以給一個查詢的例子嗎? – NotAUser
已更新。謝謝 – John
我看起來很好,至少得到第一個結果。回溯可能有問題。 如果將第一條規則更改爲「最深(節點(葉,X,葉),X)」,會發生什麼情況? – NotAUser