Prolog中的初學者,在二十幾小時的時間裏使用二叉樹。但作爲Prolog世界的新手,對它的工作過程有點困惑。 我做一些代碼以形成一個樹和tree.When的計數節點我測試,該程序輸出就像作爲..在Prolog中搜索二叉樹的節點
?- constructTree(T),count_nodes(T,N).
T = tree(1, tree(2, tree(3, nil, nil), tree(4, nil, nil)), tree(5, tree(6, nil, nil), tree(7, nil, nil))),
N = 7.
凡Ť是對應的樹和Ñ表示節點樹的數量。
相應的代碼是:
constructTree(tree(1,
tree(2,
tree(3,nil,nil),
tree(4,nil,nil)),
tree(5,
tree(6,nil,nil),
tree(7,nil,nil))
)
).
count_nodes(nil,0).
count_nodes(tree(_,L,R),N):-
count_nodes(L,CL),
count_nodes(R,CR),
N is CL+CR+1.
我如何能實現搜索節點技術,特別是如果我想使用DFS搜索?考慮一下,我想使用DFS搜索找到節點5並計算迭代次數需要找到該節點。 與代碼的解釋將有助於理解這種新的語言.. :)
你自己學習嗎?你在用什麼? – 2013-04-29 20:23:04
你到目前爲止嘗試過什麼?順便說一下,您的示例數據是最小堆,而不是二叉搜索樹。 – 2013-04-29 22:33:10
看到我上面的代碼,請你解釋min-heap和二叉搜索樹的區別.. @ DanielLyons – ridoy 2013-04-30 11:21:12