在Prolog中搜索二叉树的节点

时间:2013-04-29 20:20:04

标签: prolog

Prolog的初学者,使用二进制树几个小时。但作为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.

T 是对应的树, N 表示树的节点编号。

对应代码是:

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并计算迭代次数需要找到该节点。 与代码一起解释将有助于理解这种新语言.. :))

1 个答案:

答案 0 :(得分:0)

如何实现count_nodes / 2?这应该与搜索程序非常非常相似。只需添加搜索参数,并在值匹配时停止访问(并计算)。