Prolog二叉树节点值计数

时间:2013-03-21 08:41:32

标签: prolog

任何人都可以帮助我如何在Prolog中实现谓词,它计算二叉树的所有节点数?

例如:

tree1(tree(1,
        tree(2,
            tree(3,nil,nil),
            tree(4,nil,nil)),
        tree(5,
            tree(6,nil,nil),
            tree(7,nil,nil))
    )
). 

会回来28.任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

琐碎的递归解决方案。 尾递归。

treesum(nil, 0).
treesum(tree(X,T1,T2), S) :-
    treesum(T1, S1), treesum(T2, S2),
    S is X+S1+S2.